题目链接

  容易发现如果我们求出p和q这题就差不多快变成一个sb题了。

  于是我们就用Pollard Rho算法进行大数分解。

  至于这个算法的原理,emmm

  其实也不是很清楚啦

  

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<cctype>
#include<ctime>
using namespace std;
inline long long read(){
long long num=,f=;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-;
ch=getchar();
}
while(isdigit(ch)){
num=num*+ch-'';
ch=getchar();
}
return num*f;
} long long e,n,c; inline double random(double from,double to){
return rand()*1.0/RAND_MAX*(to-from)+from;
} inline long long mul(long long a,long long b,long long mod){
long long ans=;
while(b){
if(b&) ans=(ans+a)%mod;
a=(a+a)%mod;
b>>=;
}
return ans;
} inline long long Pow(long long a,long long b,long long mod){
long long ans=;
while(b){
if(b&) ans=mul(ans,a,mod);
a=mul(a,a,mod);
b>>=;
}
return ans;
} inline long long gcd(long long a,long long b){
return b==?a:gcd(b,a%b);
} long long getprime(long long ret,long long c){
long long x=random(,n);
long long y=x;int k=,cnt=;
while(){
x=(mul(x,x,n)+c)%n;
long long d=gcd((x-y+n)%n,n);
if(d>&&d<n) return d;
if(x==y) return n;
if(++cnt==k){ k<<=; y=x; }
}
} void exgcd(long long a,long long b,long long &x,long long &y){
if(b==){
x=;y=;
return;
}
exgcd(b,a%b,x,y);
long long tmp=x;x=y;y=tmp-a/b*y;
} int main(){
srand(time(NULL));
e=read(),n=read(),c=read();
long long p=n;
while(p>=n) p=getprime(n,random(,n));
long long q=n/p;
long long r=(p-)*(q-);
long long ano,d;
exgcd(e,r,d,ano);
d=(d+r)%r;
printf("%lld %lld\n",d,Pow(c,d,n));
return ;
}

【Luogu】P4358密钥破解(Pollard Rho)的更多相关文章

  1. Luogu P4358 密钥破解 题解报告

    题目传送门 [题目大意] 给定一个正整数N,可以被分解为两个不同的质数p和q,计算出r=(p-1)*(q-1). 然后给出了一个小于r且与r互质的整数e,已知e*d≡1(mod r),求d. 最后给定 ...

  2. 洛谷P4358密钥破解 [CQOI2016] 数论

    正解:数论 解题报告: 先,放个传送门QwQ 这题难点可能在理解题意,,, 所以我先放个题意QAQ 大概就是说,给定一个整数N,可以被拆成两个质数的成绩p*q,然后给出了一个数e,求d满足e*d=1( ...

  3. LibreOJ2045 - 「CQOI2016」密钥破解

    Portal Description 给出三个正整数\(e,N,c(\leq2^{62})\).已知\(N\)能表示成\(p\cdot q\)的形式,其中\(p,q\)为质数.计算\(r=(p-1)( ...

  4. Pollard Rho算法浅谈

    Pollard Rho介绍 Pollard Rho算法是Pollard[1]在1975年[2]发明的一种将大整数因数分解的算法 其中Pollard来源于发明者Pollard的姓,Rho则来自内部伪随机 ...

  5. 【BZOJ-4522】密钥破解 数论 + 模拟 ( Pollard_Rho分解 + Exgcd求逆元 + 快速幂 + 快速乘)

    4522: [Cqoi2016]密钥破解 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 290  Solved: 148[Submit][Status ...

  6. POJ 1811 Prime Test (Pollard rho 大整数分解)

    题意:给出一个N,若N为素数,输出Prime.若为合数,输出最小的素因子.思路:Pollard rho大整数分解,模板题 #include <iostream> #include < ...

  7. Visio Premium 2010密钥+破解激活方法

    Visio Premium 2010密钥+破解激活方法: 在安装时能够使用下面密钥: GR24B-GC2XY-KRXRG-2TRJJ-4X7DC VWQ6G-37WBG-J7DJP-CY66Y-V27 ...

  8. 整数(质因子)分解(Pollard rho大整数分解)

    整数分解,又称质因子分解.在数学中,整数分解问题是指:给出一个正整数,将其写成几个素数的乘积的形式. (每个合数都可以写成几个质数相乘的形式,这几个质数就都叫做这个合数的质因数.) .试除法(适用于范 ...

  9. Pollard Rho因子分解算法

    有一类问题,要求我们将一个正整数x,分解为两个非平凡因子(平凡因子为1与x)的乘积x=ab. 显然我们需要先检测x是否为素数(如果是素数将无解),可以使用Miller-Rabin算法来进行测试. Po ...

随机推荐

  1. C基础的练习集及测试答案(31-39)

    31.读懂以下程序,说明程序的功能#include<stdio.h>int main(){ int m,n,r,m1,m2; printf("请输入2个正整数:"); ...

  2. Spark 集群环境搭建

    思路: ①先在主机s0上安装Scala和Spark,然后复制到其它两台主机s1.s2 ②分别配置三台主机环境变量,并使用source命令使之立即生效 主机映射信息如下: 192.168.32.100 ...

  3. python之道08

    1.有如下文件,a1.txt,里面的内容为: 某某是最好的学校, 全心全意为学生服务, 只为学生未来,不为牟利. 我说的都是真的.哈哈 分别完成以下的功能: a,将原文件全部读出来并打印. 答案 f ...

  4. 《队长说得队》第八次团队作业Alpha冲刺

    项目 内容 这个作业属于哪个课程 >>2016级计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 >>实验十二 团队作业8:软件测试与ALPHA冲刺 团队名称 ...

  5. Redis的安装、服务配置

    在网上找了很多资料,有些可以正常安装,有些安装会出毛病,仔细想了想,还是自己整理一份吧,仅仅为自己下次再用的时候,能够快速的定位到可以正常用的文章! 我使用的是VMware Workstation P ...

  6. 关于使用Java实现的简单网络爬虫Demo

    什么是网络爬虫? 网络爬虫又叫蜘蛛,网络蜘蛛是通过网页的链接地址来寻找网页,从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直 ...

  7. python3 连接 mysql和mariadb的模块

    是pymysql python2中是MySQL-python sudo pip install pymysql 参考博客https://www.jb51.net/article/140387.htm

  8. matplotlib学习记录 四

    # 绘制3月每天最高温和10月每天最高温散点图 from matplotlib import pyplot as plt # 让matplotlib能够显示中文 plt.rcParams['font. ...

  9. Python9-进程-day36

    import osfrom multiprocessing import Processimport timedef func(args,args2): print(args,args2) time. ...

  10. stm32独立看门狗实验

    //ALIENTEK Mini STM32开发板V1.9范例代码5//独立看门狗实验//正点原子@ALIENTEK//技术论坛:www.openedv.com STM32F103RBT6属于中容量版本 ...