BZOJ4522: [Cqoi2016]密钥破解
pollard's rho模板题。
调参调到160ms无能为力了,应该是写法问题,不玩了。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll e,p,c;
ll mul(ll u,ll v){
return(u*v-ll((long double)u*v/p)*p+p)%p;
}
ll wop(ll u,ll v){
ll s=1;
for(;v;v>>=1){
if(v&1)s=mul(s,u);
if(v>1)u=mul(u,u);
}
return s;
}
void gcd(ll a,ll b,ll&x,ll&y){
if(!b)x=1,y=0;
else
gcd(b,a%b,y,x),y-=a/b*x;
}
ll inv(ll a,ll b,ll x=0,ll y=0){
gcd(a,b,x,y);
return(x+b)%b;
}
ll sol(){
ll d,i,j=19999811;
for(int s=1;;++s){
i=s^s&-s?i:j;
j=(mul(j,j)+p-1)%p;
if((d=__gcd(abs(i-j),p))!=1&&d!=p)
break;
}
return(d-1)*(p/d-1);
}
int main(){
cin>>e>>p>>c;
ll d=inv(e,sol());
cout<<d<<" "<<wop(c,d)<<endl;
}
BZOJ4522: [Cqoi2016]密钥破解的更多相关文章
- BZOJ4522:[CQOI2016]密钥破解(Pollard-Rho,exgcd)
Description 一种非对称加密算法的密钥生成过程如下: 1. 任选两个不同的质数 p ,q 2. 计算 N=pq , r=(p-1)(q-1) 3. 选取小于r ,且与 r 互质的整数 e ...
- 【BZOJ-4522】密钥破解 数论 + 模拟 ( Pollard_Rho分解 + Exgcd求逆元 + 快速幂 + 快速乘)
4522: [Cqoi2016]密钥破解 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 290 Solved: 148[Submit][Status ...
- LG4718 【模板】Pollard-Rho算法 和 [Cqoi2016]密钥破解
Pollard-Rho算法 总结了各种卡常技巧的代码: #define int long long typedef __int128 LL; IN int fpow(int a,int b,int m ...
- BZOJ 4522: [Cqoi2016]密钥破解
http://www.lydsy.com/JudgeOnline/problem.php?id=4522 题目:给你RSA密钥的公钥和密文,求私钥和原文,其中\(N=pq\le 2^{62}\),p和 ...
- [CQOI2016]密钥破解
嘟嘟嘟 这题我读了两遍才懂,然后感觉要解什么高次同余方程--然后我又仔细的看了看题,发现只要求得\(p\)和\(q\)就能求出\(r\),继而用exgcd求出\(d\),最后用快速幂求出\(n\). ...
- BZOJ 4522: [Cqoi2016]密钥破解 (Pollard-Rho板题)
Pollard-Rho 模板 板题-没啥说的- 求逆元出来后如果是负的记得加回正数 CODE #include<bits/stdc++.h> using namespace std; ty ...
- BZOJ 4522: [Cqoi2016]密钥破解 exgcd+Pollard-Rho
挺简单的,正好能再复习一遍 $exgcd$~ 按照题意一遍一遍模拟即可,注意一下 $pollard-rho$ 中的细节. #include <ctime> #include <cma ...
- LibreOJ2045 - 「CQOI2016」密钥破解
Portal Description 给出三个正整数\(e,N,c(\leq2^{62})\).已知\(N\)能表示成\(p\cdot q\)的形式,其中\(p,q\)为质数.计算\(r=(p-1)( ...
- Visio Premium 2010密钥+破解激活方法
Visio Premium 2010密钥+破解激活方法: 在安装时能够使用下面密钥: GR24B-GC2XY-KRXRG-2TRJJ-4X7DC VWQ6G-37WBG-J7DJP-CY66Y-V27 ...
随机推荐
- Who Says What to Whom on Twitter-www2011-20160512
分析性论文 what: who? 本文将Twitter中的用户分为了两大类--普通用户和精英用户,精英用户又被分为四类,分别为媒体(media).名人(celebrities).博主(bloggers ...
- JAVA多线程(二)
Synchronized的使用: (一)synchronized: Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 当某个方法或者代 ...
- SQL复杂查询和视图(2)
分组查询 SQL可以将检索到的元组按某一条件进行分组,分组是属性值相同的为一组 求每个学生的平均成绩 SELECT sn,AVG(score)FROM scGROUP BY sn 先按sn进行分组,即 ...
- java中的注解
注解为程序提供信息,但不是程序本身的组成部分.注解有以下用途: * 为编译器提供信息,相当于C语言中的预编译指令 * 部署时处理,软件工具可以根据注解来生成代码,XML文件等,例如编写servlet, ...
- Android中的进程与线程
四大组件都是运行在主线程中 1.前台进程:用户正在交互,相当于Activity执行了onResume方法 2.可见进程:用户失去了焦点,相当于Activity执行了onPause方法 3.服务进程:运 ...
- 哈希 poj 2002
n个点 求其中有几个正方形 n<1000 暴力4个点就不行了 大概2个点还可以 根基(x*x+y*y)%素数 hash 一下 告诉你2个点求 另外2个点 画个图推一下 重复要/2; #inclu ...
- 通过自定义Attribute及泛型extension封装数据验证过程
需求来源: 在日常工作中,业务流程往往就是大量持续的数据流转.加工.展现过程,在这个过程中,不可避免的就是数据验证的工作.数据验证工作是个很枯燥的重复劳动,没有什么技术含量,需要的就是对业务流程的准确 ...
- Js-加密
1.base64加密 在页面中引入base64.js文件,调用方法为: <!DOCTYPE HTML> <html> <head> <meta charset ...
- 去掉谷歌浏览器获取焦点时默认的input、textarea的边框和背景
去掉chrome(谷歌)浏览器默认的input.textarea的边框(border)和背景(background) 及chrome下不可更改textarea大小 1.使用Chrome的都知道,当鼠标 ...
- bzoj2565: 最长双回文串
manacher之后乱搞 #include <iostream> #include <cstdio> #include <cstring> #include < ...