hdu1211
来源:互联网 发布:淘宝店好评 编辑:程序博客网 时间:2024/05/04 02:43
这主要是读题很困难,而且没有给数据范围,这就导致有个本来应该用欧几里得拓展的部分,用暴力可以做。然后就是
题意
*RSA是个很强大的加密数据的工具,对RSA系统的描述如下:选择两个大素数p、q,计算n = p q,F(n) = (p-1)(q-1),选择一个整数e,使得gcd(e,F(n)) = 1,e是公匙,计算d使得d e mod F(n) = 1 mod F(n),d是私匙。加密数据的方法为C = E(m) = m^e mod n解密数据的方法为M = D(c) = c^d mod n其中,c是密文中字母的ASCII的值;m是明文中字母的ASCII的值。现在问题来了,给你p、q、e和一些密文,请把密文翻译成明文。
**暴力可以解决,数据比较水
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int work(int a , int n , int m){ int res = 1; while(n){ if(n & 1){ res = (res * a) % m; } a = (a * a) % m; n >>= 1; } return res;}int fun(int a,int b,int n){ //返回a^b%n 蒙哥马利罗比算法 int res=1;; while(b) { if(b%2) { res*=a; res%=n; } a*=a; a%=n; b/=2; } return res;}int main(){ int p , q , e , l ; while(~scanf("%d%d%d%d", &p , &q , &e , &l)){ int n = p * q; int f = (p - 1)*(q - 1); int d = f / e + 1; while(1){ if(d*e%f == 1) break; else d++; } char ans; int mi; for(int i = 0 ; i < l ; i++){ scanf("%d",&mi); printf("%c",fun(mi , d , n)); } printf("\n"); } return 0;}
0 0
- HDU1211
- hdu1211
- hdu1211
- hdu1211
- HDU1211 RSA
- RSA HDU1211
- HDU1211 RSA 基础
- HDU1211 RSA【公匙密码】
- hdu1211(RSA)(扩展欧几里得+快速幂+快速乘)
- hdu1211(模的逆元、扩展欧几里得)
- 快速幂模-蒙哥马利-递推-HDU4506-HDU1211-HDU1575
- WildFly配置gzip压缩
- AFNetWorking的实现分析
- 452.Remove Linked List Elements-删除链表中的元素(入门题)
- Spring AOP
- ImagView设置图片的几种方法
- hdu1211
- Archlinux setup the user autologin
- POJ-2654-Rock-Paper-Scissors Tournament
- 图论 最短路 difjstra 专题
- Spring 控制反转IOC,依赖注入DI
- C++应用程序的编译过程
- linux下php环境搭建
- 同步升压FP6276 Layout 指导与EMI对策
- 点手机浏览器后退按钮强制刷新页面