[Rho大整数分解] BZOJ 4522 [Cqoi2016]密钥破解
来源:互联网 发布:nginx http1.1 编辑:程序博客网 时间:2024/04/28 21:49
这种裸题 就是Rho的直接应用
长点记性啊,linux下RAND_MAX=2^31 狂T啊啊
#include<cstdio>#include<cstdlib>#include<ctime>#include<algorithm>#include<cmath>#include<map>using namespace std;typedef long long ll;typedef pair<ll,ll> abcd;inline char nc(){static char buf[100000],*p1=buf,*p2=buf;if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin); if (p1==p2) return EOF; }return *p1++;}inline void read(ll &x){char c=nc(),b=1;for (;!(c>='0' && c<='9');c=nc()) if (c=='-') b=-1;for (x=0;c>='0' && c<='9';x=x*10+c-'0',c=nc()); x*=b;}inline ll Random(ll n){//return (ll)((double)rand()/(RAND_MAX+1)*n);return (ll)rand()*rand()%n;}inline ll gcd(ll a,ll b){return b!=0?gcd(b,a%b):a;}inline ll Mul(ll a,ll b,ll p){ll t=0;a%=p; b%=p;for(;b;b>>=1,a=(a+a)%p)if(b&1)(t+=a)%=p;return t;}inline ll Pow(ll a,ll b,ll p){ll t=1;for(;b;b>>=1,a=Mul(a,a,p))if(b&1)t=Mul(t,a,p);return t;}ll rho(ll n,ll c) { ll k=2,x=Random(n),y=x,p=1; for(ll i=1;1;i++) { x=(Mul(x,x,n)+c)%n;if (y==x) return n; p=gcd(n,abs(x-y)); if(1<p && p<n) return p; if(i==k) y=x,k<<=1; }}ll e,N,c,r,d,m;ll P,Q;inline void Calc(ll n,ll c) { ll t=n; ll k=c;while(t==n) t=rho(t,k--); P=t; Q=n/t;}inline abcd EXGCD(ll x,ll y){abcd ret;if (x<y) { ret=EXGCD(y,x); return abcd(ret.second,ret.first); }if (y==0) return abcd(1,0);ret=EXGCD(y,x%y);return abcd(ret.second,ret.first-x/y*ret.second);}inline ll inv(ll a,ll p){return ((EXGCD(a,p).first)%p+p)%p;}int main(){srand(10007);freopen("t.in","r",stdin);freopen("t.out","w",stdout);read(e); read(N); read(c);Calc(N,10007);r=(P-1)*(Q-1);d=inv(e,r);m=Pow(c,d,N);printf("%lld %lld\n",d,m);return 0;}
0 0
- [Rho大整数分解] BZOJ 4522 [Cqoi2016]密钥破解
- CQOI2016 密钥破解 pollard-rho
- bzoj 4522 [Cqoi2016]密钥破解
- bzoj 4522: [Cqoi2016]密钥破解
- BZOJ 4522: [Cqoi2016]密钥破解
- [BZOJ4522] [CQOI2016] 密钥破解 - Pollard-Rho - exgcd
- 4522: [Cqoi2016]密钥破解
- Pollard Rho 大整数分解
- Pallord rho大整数分解
- Pollard-rho大整数分解
- [数学 拉格朗日四平方和定理 Rho大整数分解] BZOJ 2904 平方和
- CQOI2016 bzoj4522 密钥破解
- JZOJ4458. 【CQOI2016】密钥破解
- [bzoj4522][CQOI2016]密钥破解
- 【CQOI2016】密钥破解
- Miller-Rabin素数测试和Pollard-rho大整数分解
- 大整数分解——Pollard Rho算法
- Jzoj4458 密钥破解——Pollard-rho
- Oracle to_date/Trunc函数用法及date字段只精确到日期的问题
- Ubuntu14.04安装搜狗输入法
- 第八周上机实践项目-项目1-(1)
- XToDoList 助你一臂之力
- Heap Sort ——重拾堆排序
- [Rho大整数分解] BZOJ 4522 [Cqoi2016]密钥破解
- HDU 3062 Party 2-SAT
- [实时更新]花园挑战赛进程
- Spring MVC Controller中解析GET方式的中文参数会乱码的问题
- javaweb中如何将java.util.Date类型转换成java.sql.Date
- Hibernate 性能优化法则
- Oracle笔记(十二) 集合、序列
- sass的编译工具Koala
- 查看文件大小