教学服务系统

 找回密码
 立即注册
搜索
查看: 568|回复: 4

信息计算2019级1班12号雷楚涵

[复制链接]

9

主题

26

帖子

103

积分

注册会员

Rank: 2

积分
103
发表于 2022-4-30 19:50:25 | 显示全部楼层 |阅读模式
4月19日mooc学习记录


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

9

主题

26

帖子

103

积分

注册会员

Rank: 2

积分
103
 楼主| 发表于 2022-4-30 19:51:50 | 显示全部楼层
4月22日mooc学习截图


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

9

主题

26

帖子

103

积分

注册会员

Rank: 2

积分
103
 楼主| 发表于 2022-4-30 19:53:09 | 显示全部楼层

信息计算2019级2班3号徐柳婧

4月29日mooc学习截图


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

9

主题

26

帖子

103

积分

注册会员

Rank: 2

积分
103
 楼主| 发表于 2022-5-3 11:25:55 | 显示全部楼层
5月3日mooc学习记录


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

9

主题

26

帖子

103

积分

注册会员

Rank: 2

积分
103
 楼主| 发表于 2022-5-4 18:44:40 | 显示全部楼层
  1. <div class="blockcode"><blockquote>
  2. [code]#include<stdio.h>
  3. #include<stdlib.h>

  4. int long_n(int n);
  5. int shuru(char* arr, int k, char* wei, int is_first);
  6. void jiami(char* arr, int k, int e, int n);

  7. int shuru(char* arr, int k, char* wei, int is_first)
  8. {
  9.         int i;
  10.         char ch;
  11.      
  12.         if (is_first == 1)
  13.                 ch = getchar();
  14.         else
  15.                 ch = *wei;
  16.         for (i = 0; (i < k) && (ch != '\n'); i++)
  17.         {
  18.                 arr[i] = ch;
  19.                 ch = getchar();
  20.         }
  21.         *wei = ch;
  22.         for (i = i; i < k; i++)
  23.                 arr[i] = 'a';  
  24.         if (ch == '\n')  
  25.                 return 0;
  26.         else
  27.                 return 1;
  28. }


  29. void jiami(char* arr, int k, int e, int n)
  30. {
  31.         int m = 0, c = 1, i, j, t = 0, shu, temp, num = 0;
  32.         int* array;
  33.       
  34.         for (i = 0; i < k; i++)
  35.         {
  36.                 temp = 1;
  37.                 for (j = 0; j < (k - i - 1) * 2; j++)
  38.                         temp = temp * 10;
  39.                 shu = (int)arr[i] - 97;
  40.                 m = m + temp * shu;
  41.         }
  42.         temp = e;
  43.      
  44.         do {
  45.                 temp = temp / 2;
  46.                 num++;
  47.         } while (temp != 0);
  48.         array = (int*)malloc(sizeof(int) * k);
  49.         temp = e;
  50.       
  51.         for (i = 0; i < num; i++)
  52.         {
  53.                 array[i] = temp % 2;
  54.                 temp = temp / 2;
  55.         }
  56.       
  57.         for (i = num - 1; i >= 0; i--)
  58.         {
  59.                 t = t * 2;
  60.                 temp = c * c;
  61.                 if (temp > n)
  62.                 {
  63.                         for (j = 0; temp - n * j >= 0; j++);
  64.                         j--;
  65.                         c = temp - n * j;
  66.                 }
  67.                 else
  68.                         c = temp;
  69.                 if (array[i] == 1)
  70.                 {
  71.                         t = t + 1;
  72.                         temp = c * m;
  73.                         if (temp > n)
  74.                         {
  75.                                 for (j = 0; temp - n * j >= 0; j++);
  76.                                 j--;
  77.                                 c = temp - n * j;
  78.                         }
  79.                         else
  80.                                 c = temp;
  81.                 }

  82.                 e = e / 2;
  83.         }
  84.         temp = c;
  85.         i = 0;
  86.       
  87.         do {
  88.                 temp = temp / 10;
  89.                 i++;
  90.         } while (temp != 0);
  91.         for (i; i < num; i++)
  92.                 printf("0");
  93.         printf("%d", c);
  94. }

  95. int long_n(int n)
  96. {
  97.         int temp, i, j, k, shi, comp = 0;
  98.         temp = n;

  99.         for (i = 1; temp / 10 != 0; i++)
  100.         {
  101.                 temp = temp / 10;
  102.         }
  103.         temp = i;
  104.    
  105.         if (i % 2 != 0)
  106.         {
  107.                 i = i - 1;
  108.                 return i;
  109.         }
  110.    
  111.         else
  112.         {
  113.                 for (j = 0; j < i / 2; j++)
  114.                 {
  115.                         shi = 1;
  116.                         for (k = 0; k < temp - 2; k++)
  117.                                 shi = shi * 10;
  118.                         comp = comp + shi * 25;
  119.                         temp = temp - 2;
  120.                 }
  121.                 if (comp <= n)
  122.                         return i;
  123.                 else
  124.                 {
  125.                         i = i - 2;
  126.                         return i;
  127.                 }
  128.         }
  129. }


  130. int main()
  131. {
  132.         int p, q, e, d, n, fai_n, k, i, is_first = 1;
  133.         char ch, * arr, wei = 'a';
  134.         printf("请输入p、q、e值,用空格间隔开\n");
  135.         scanf_s("%d%d%d", &p, &q, &e);
  136.         n = p * q;
  137.         fai_n = (p - 1) * (q - 1);   //Φ(n)
  138.         for (k = 0; (k * n + 1) % e != 0; k++);
  139.         if ((k * n + 1) % e == 0)
  140.                 d = (k * n + 1) / e;  //d * e ≡ 1 (mod Φ(n))
  141.         k = long_n(n);
  142.         k = k / 2;  
  143.         ch = getchar();
  144.         arr = (char*)malloc(sizeof(char) * k);  
  145.         printf("请输入明文\n");
  146.         while (1)
  147.         {
  148.                 i = shuru(arr, k, &wei, is_first);  
  149.                 is_first = 0;  
  150.                 jiami(arr, k, e, n);  
  151.                 if (i == 0)  
  152.                         break;
  153.         }
  154.         printf("\n");
  155.         return 0;
  156. }
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

教学服务系统

GMT+8, 2025-4-30 14:21 , Processed in 0.015882 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表