URAL 1141 计算模n的e次根
来源:互联网 发布:pip linux 编辑:程序博客网 时间:2024/06/01 10:43
给出 n=p*q p,q为素数 gcd(e, (p-1)*(q-1)) = 1, e < (p-1)*(q-1) ) 求m满足方程me = c (mod n)。
摘自《数论概论》
#include <iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<map>#include<set>using namespace std;#define maxn 32050typedef long long ll;ll phi[maxn];void getphi(){ for(int i=1; i<maxn; i++) phi[i]=i; for(int i=2; i<maxn; i+=2) phi[i]>>=1; for(int i=3; i<maxn; i+=2) if(phi[i]==i) for(int j=i; j<maxn; j+=i) phi[j]=phi[j]/i*(i-1);}void exgcd(ll a,ll b,ll &d,ll &x,ll &y){ if(b==0) { x=1,y=0,d=a; return; } exgcd(b,a%b,d,x,y); ll temp=x; x=y,y=temp-(a/b)*y;}ll exp_pow(ll a,ll b,ll c){ a%=c; ll q=1; while(b) { if(b&1) q=q*a%c; b>>=1,a=a*a%c; } return q;}int main(){ getphi(); int t; ll e,n,c; scanf("%d",&t); while(t--) { scanf("%I64d%I64d%I64d",&e,&n,&c); ll u,v,d; exgcd(e,phi[n],d,u,v); u=(u%phi[n]+phi[n])%phi[n]; printf("%I64d\n",exp_pow(c,u,n)); } return 0;}
- URAL 1141 计算模n的e次根
- 计算2的n次幂
- 阶乘循环根n次 的时候,加上1e-5 …
- 输入n,计算2的n次幂
- 计算模 m 的 k 次根
- 快速计算x的n次幂 power()的实现
- N次水仙花数的计算及优化
- P124.39(计算x的n次幂)
- STL power() 计算一个数的n次幂
- 数论 计算模m的k次根
- URAL 1456 求a模n的阶
- 周次的计算
- (datastructure1.5.1)URAL 1068 SUM(计算前n项和)
- STL系列之七 快速计算x的n次幂 power()的实现
- STL系列之七 快速计算x的n次幂 power()的实现
- STL系列之七 快速计算x的n次幂 power()的实现
- STL系列之七 快速计算x的n次幂 power()的实现
- STL系列 快速计算x的n次幂 power()的实现
- 在csdn安家
- 排序算法_快速排序
- 键盘驱动之--- 硬件i8042控制器
- 信息检索笔记-索引构建
- 戴尔私有化交易获监管机构批准 11月1日前完成
- URAL 1141 计算模n的e次根
- 查询别人微信聊天记录,操作只需30分钟快速完成
- 将小写字母转化成大写字母
- 三位大股东推动盖茨辞去微软董事长职位
- ACM学习-POJ-1163-The Triangle
- JDBC小小实例教程
- 百度2014校招笔试题目题解(更新了第1题的算法,10.9下午)
- linux_C一站学习--课后习题(一)简单函数;分支语句;深入理解函数
- IT也疯狂:十一长假特别篇