posts - 99,  comments - 8,  trackbacks - 0
1#include <stdio.h>
 2#include <stdlib.h>
 3#include <math.h>
 4int main ()
 5{
 6    int p, q, e, l;
 7    __int64 n, Fn;
 8    int d;
 9    
10    while ( scanf ("%d%d%d%d"&p, &q, &e, &l) != EOF )
11    {
12          n = p * q;
13          Fn = (p -1* (q - 1);
14          //利用枚举法求d
15          d = 1;
16          while ( (d * e) % Fn != 1)
17          d ++
18           
19           //破译密文:利用scanf输入空格结束处理c
20           int c, temp;
21           for (int i = 0; i < l; i++)
22           {
23               scanf("%d"&c); 
24               temp = 1;
25               for (int j = 1; j <= d; j++)  //难点:如何利用数论知识处理计算 (c 的 d 次方) %  n;
26                                             //上式等于  (c %  n) d 次方  % n; 
27               {
28                   temp *= c;
29                   temp %= n;
30               }
  
31               printf ("%c",temp);                                                                                                                                                                                                                                                                                                                                      
32           }
 
33           
34           printf ("\n");
35    }

36    return 0;
37}

38
posted on 2010-08-21 11:43 雪黛依梦 阅读(572) 评论(2)  编辑 收藏 引用

FeedBack:
# re: hdu 1211 数论
2010-09-06 14:43 | Lysander
确实没看出你这是数论



  回复  更多评论
  
# re: hdu 1211 数论
2012-03-23 19:44 | 44
你做的什么啊,数据弱让你过了@Lysander
  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2010年9月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

常用链接

留言簿(4)

随笔分类

随笔档案

文章档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜