URAL 1141(扩展欧几里德+欧拉函数)
来源:互联网 发布:电脑免费剪辑软件 编辑:程序博客网 时间:2024/06/05 18:24
传送门
这就是传说中的RSA加密?!
题意:
给出正整数e,n,c。已知n=p*q,其中p,q为两个奇质数并且gcd(e,(p-1)*(q-1))=1。求出一个m使m^e=c(mod n)。
题解:
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cassert>using namespace std;typedef long long ll;int e,n,c;inline int phi(int n) {int ret=n,a=n;for (int i=2;i*i<=n;++i) {if (a%i==0) ret=ret/i*(i-1);while (a%i==0) a/=i;}if (a>1) ret=ret/a*(a-1);return ret;}int exgcd(int a,int b,int &x,int &y) {if (!b) {x=1,y=0;return a;}int d=exgcd(b,a%b,y,x);y-=(a/b)*x;return d;}int fpow(int a,int b,int p) {int ret=1;while (b) {if (b&1) ret=(ll)ret*a%p;a=(ll)a*a%p,b>>=1;}return ret;}int main() {//freopen("URAL 1141.in","r",stdin);int kase;scanf("%d",&kase);while (kase--) {scanf("%d%d%d",&e,&n,&c);int x,y,ph;int d=exgcd(e,ph=phi(n),x,y);assert(d==1);x=(x%ph+ph)%ph;int m=fpow(c,x,n);printf("%d\n",m);}return 0;}
阅读全文
0 0
- URAL 1141(扩展欧几里德+欧拉函数)
- UVA11426 GCD - Extreme (II) 欧拉函数`扩展欧几里德应用
- ACM: 扩展欧几里德+欧拉函数 数论…
- UVA 12493 Stars(扩展欧几里德+欧拉函数)
- URAL 1204. Idempotents 扩展欧几里德
- 扩展欧几里德线性同余方程 中国剩余定理 欧拉函数 资料
- 数论快速入门(同余、扩展欧几里德、中国剩余定理、大素数测定和整数分解、素数三种筛法、欧拉函数以及各种模板)
- 数论快速入门(同余、扩展欧几里德、中国剩余定理、大素数测定和整数分解、素数三种筛法、欧拉函数以及各种模板)
- 扩展欧拉函数
- 欧几里德辗转相除法 费马小定理 欧拉定理 扩展欧几里德算法简介
- poj3696.The Luckiest number (阶 && 欧拉函数 && 欧几里德)
- 欧拉函数及其扩展
- (扩展)欧几里德算法
- (扩展)欧几里德
- (扩展)欧几里德算法
- poj1061(扩展欧几里德)
- 欧几里德及扩展欧几里德算法(学习)
- 欧几里德距离、欧拉距离
- Java代码中执行存储过程和函数
- 基于python的selenium自动化测试环境搭建
- 动态规划问题3-矩阵连乘问题
- leetcode 73
- ISAP算法
- URAL 1141(扩展欧几里德+欧拉函数)
- 数据结构实验之链表四:有序链表的归并
- Android上的Notification
- Eclipse常用快捷键
- java集成支付宝支付接口(JSP+支付宝20160912)
- 读取excel文件数据集,生成固定格式excel文件
- Linux安装SS服务端
- 求伯君的传奇经历
- Qml弹出右侧信息弹窗