[bzoj4522][CQOI2016]密钥破解
来源:互联网 发布:日本校园霸凌 知乎 编辑:程序博客网 时间:2024/05/02 01:23
题目描述
快速分解
做pollard_rho算法后模拟题意。
#include<cstdio>#include<algorithm>#include<cmath>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;typedef long long ll;ll e,d,n,nn,r,c,a,xx,yy,t,p,q,mo;void gcd(ll a,ll b){ if (!b){ xx=1; yy=0; t=a; } else{ gcd(b,a%b); swap(xx,yy); yy-=xx*(a/b); }}ll getny(ll x,ll y){ gcd(x,y); xx=(xx%y+y)%y; return xx;}int rand() { static int rand_seed=1542071823; rand_seed+=rand_seed<<1|1; return rand_seed;}ll qsc(ll x,ll y){ if (!y) return 0; ll t=qsc(x,y/2); t=(t+t)%mo; if (y%2) t=(t+x)%mo; return t;}ll qsm(ll x,ll y){ if (!y) return 1; ll t=qsm(x,y/2); t=qsc(t,t); if (y%2) t=qsc(t,x); return t;}ll f(ll x){ return (qsc(x,x)+a)%mo;}ll pollard_rho(ll n){ ll r1,r2,p; while (1){ a=rand()%100; r1=r2=2; do{ r1=f(r1); r2=f(f(r2)); gcd(abs(r2-r1),n); p=t; if (p>1) return p; }while (r1!=r2); }}int main(){ scanf("%lld%lld%lld",&e,&n,&c); mo=n; p=pollard_rho(n); q=n/p; r=(p-1)*(q-1); d=getny(e,r); nn=qsm(c,d); printf("%lld %lld\n",d,nn);}
0 0
- CQOI2016 bzoj4522 密钥破解
- [bzoj4522][CQOI2016]密钥破解
- [BZOJ4522] [CQOI2016] 密钥破解 - Pollard-Rho - exgcd
- bzoj4522【CQOI2016】秘钥破解
- JZOJ4458. 【CQOI2016】密钥破解
- 【CQOI2016】密钥破解
- 4522: [Cqoi2016]密钥破解
- bzoj 4522 [Cqoi2016]密钥破解
- bzoj 4522: [Cqoi2016]密钥破解
- CQOI2016 密钥破解 pollard-rho
- BZOJ 4522: [Cqoi2016]密钥破解
- [Rho大整数分解] BZOJ 4522 [Cqoi2016]密钥破解
- CQOI2016
- cqoi2016
- [ Pollard_rho ] BZOJ4522
- 破解无线网络密钥
- VS2013密钥破解
- vs2015破解密钥
- hrbust 2104 Encryption 【模拟+STL】
- javascript Date format(js日期格式化)
- mac android studio 离线文档
- ASP.NET MVC Controller的激活
- API json多层数据实体类封装(利用泛型技术)
- [bzoj4522][CQOI2016]密钥破解
- ISE数字设计入门体验
- 【NOIP2015模拟11.3】备用钥匙
- Android架构合集(文章整理,后续不断更新中)
- Eclipse 下找不到或无法加载主类的解决办法
- Agileone安装
- Android屏幕适配全攻略
- 36. Valid Sudoku
- 阿里云oss存储(js端签名直传)