BZOJ 4522 Pollard-rho+exgcd
来源:互联网 发布:java编程思想 新手 编辑:程序博客网 时间:2024/06/08 03:37
思路:
N=P*Q
求出来P和Q 模拟就好…
//By SiriusRen#include <cstdio>#include <algorithm>using namespace std;typedef long long ll;ll shai[10]={2,3,5,7,11,13,17,19,21,23};ll mul(ll x,ll y,ll mod){ x%=mod;ll res=0; while(y){ if(y&1)res=(x+res)%mod; (x<<=1)%=mod,y>>=1; }return res;}ll pow(ll x,ll y,ll mod){ x%=mod;ll res=1; while(y){ if(y&1)res=mul(res,x,mod); x=mul(x,x,mod),y>>=1; }return res;}bool check(ll a,ll n,ll r,int s){ ll x=pow(a,r,n),pre=x; for(int i=1;i<=s;i++){ x=mul(x,x,n); if(x==1&&pre!=1&&pre!=n-1)return 0; pre=x; }return x==1;}bool miller_rabin(ll x){ if(x<=1)return 0; ll r=x-1;int s=0; while(!(r&1))r>>=1,s++; for(int i=0;i<10;i++){ if(x==shai[i])return 1; if(!check(shai[i],x,r,s))return 0; }return 1;}ll gcd(ll x,ll y){return y?gcd(y,x%y):x;}ll prime_factor(ll n,ll c){ ll k=2,x=rand()%n,y=x,p=1; for(int i=1;p==1;i++){ x=(mul(x,x,n)+c)%n; p=gcd(abs(x-y),n); if(i==k)y=x,k<<=1; }return p;}ll P,Q,R,E,N,C,X,Y;void pollard_rho(ll x){ if(x==1)return; if(miller_rabin(x)){P=x;return;} ll p=x; while(p==x)p=prime_factor(x,rand()%(x-1)); pollard_rho(p),pollard_rho(x/p);}ll exgcd(ll a,ll b,ll &x,ll &y){ if(!b)x=1,y=0; else exgcd(b,a%b,y,x),y-=x*(a/b);}int main(){ scanf("%lld%lld%lld",&E,&N,&C); pollard_rho(N),Q=N/P,R=(P-1)*(Q-1); exgcd(E,R,X,Y),X=(X+R)%R; printf("%lld %lld\n",X,pow(C,X,N));}
0 0
- BZOJ 4522 Pollard-rho+exgcd
- [BZOJ4522] [CQOI2016] 密钥破解 - Pollard-Rho - exgcd
- BZOJ 3667 Pollard-rho &Miller-Rabin
- pollard rho
- 【Pollard Rho模板】【bzoj 3667】: Rabin-Miller算法
- bzoj 3667: Rabin-Miller算法 (Miller_rabbin+Pollard rho)
- Pollard Rho method
- Pollard's Rho Method
- Pollard Rho算法思想
- Pollard Rho 大数分解
- Pollard Rho因数分解
- POJ2429 Pollard rho因子分解
- Pollard Rho 大整数分解
- Pollard rho整数分解法
- Pollard-rho大整数分解
- Miller_Rabin和Pollard Rho算法
- CQOI2016 密钥破解 pollard-rho
- POJ1811--miller rabin&pollard rho
- Android源码分析-异步消息机制
- 线程和进程
- jconsole监控远程linux tomcat运行情况的配置
- 判断一个字符是否包含在另一个字符里面
- PHP调试技术手册V1.0.0 (内含PDF)
- BZOJ 4522 Pollard-rho+exgcd
- 2017年2月27日手记
- php常用的正则匹配
- Can not issue NULL query
- mysql date_add函数
- 利用 LeakCanary 来检查 Android 内存泄漏
- Java并发编程(3)-- Thread
- redis StackExchange 主备 实现 demo
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(四)代码简化