此题非常新颖,有一个专门的算法,所以如果没有了解过,那么就只能写暴力卡了

这道题后面的几步都很简单,一个扩展gcd求逆元,一个快速幂,所以关键就是求r,而这需要对N=pq进行分解

本来这个问题在是一个NP问题,不存在多项式算法(这里的多项式指的是lgN形式的式子,因为N通常有10^100以上的级别)

但是这里不需要写高精度所以N最大就是10^18

介绍一下这个问题的专门算法Pollard-rho

TMD劳资3k的博文被吞了我就直接发源文件截图好了

最后一个std

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define L long long
#define SL __int128
L e,c,d,N,p=1,r,q,a=2,b=2,A,y;
L abs(L x){ return x>0?x:-x; }
L f(L x){ return ((SL)x*x+A)%N; }
L gcd(L a,L b){for(L c;b;a=b,b=c) c=a%b;return a;
}
L pow(SL x,L k,L M){SL S=1;for(;k;x=x*x%N,k>>=1)if(k&1) S=S*x%M;return S;
}
L extgcd(L a,L b,L& x,L& y){if(b){L r=extgcd(b,a%b,y,x);y-=x*(a/b);return r;} else { x=1,y=0; return a; }
}
int main(){srand(time(0));scanf("%lld%lld%lld",&e,&N,&c); start:A=rand(); a=2;b=2;do{a=f(a); b=f(f(b));p=gcd(abs(b-a),N);if(p>1) break;} while(a!=b);if(p==1) goto start;q=N/p; if(p>q){p^=q;q^=p;p^=q;}r=(p-1)*(q-1);extgcd(e,r,d,y); d=(d+r)%r;printf("%lld %lld\n",d,pow(c,d,N));
}

转载于:https://www.cnblogs.com/Extended-Ash/p/7774381.html

Jzoj4458 密钥破解——Pollard-rho相关推荐

  1. [Cqoi2016] 密钥破解 Java 题解

    密钥破解 题目描述 一种非对称加密算法的密钥生成过程如下: 任选两个不同的质数 p ,q 计算 N=pq , r=(p-1)(q-1) 选取小于r ,且与 r 互质的整数 e 计算整数 d ,使得 e ...

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

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

  3. 64位以内Rabin-Miller 强伪素数测试和Pollard rho 因数分解解析

    在求解POJ1811题Prime Test中应用到的两个重要算法是Rabin-Miller强伪素数测试和Pollard r因数分解算法.前者可以在的时间内以很高的成功概率判断一个整数是否是素数.后者可 ...

  4. 整数的素因子分解:Pollard rho method

    参考: 1.CLRS<算法导论> 2.http://www.csh.rit.edu/~pat/math/quickies/rho/#algorithm Pollard rho方法是随机算法 ...

  5. bzoj 4522: [Cqoi2016]密钥破解

    4522: [Cqoi2016]密钥破解 Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 818  Solved: 480 [Submit][Stat ...

  6. 因数分解 Pollard rho

    因数分解 Pollard rho 算法思路 随机生成两个数a,ba,ba,b,然后求gcd⁡(n,a−b)\gcd\pod{n,a-b}gcd(n,a−b),如果其值不为111,则这个数就是nnn的一 ...

  7. c语言用rho函数求复数模长,Pollard Rho 算法简介

    $\text{update 2019.8.18}$ 由于本人将大部分精力花在了cnblogs上,而不是洛谷博客,评论区提出的一些问题直到今天才解决. 下面给出的Pollard Rho函数已给出散点图. ...

  8. 大整数分解——Pollard Rho算法

    延续上一篇,这次来讲一讲大整数分解算法的应用. 要解决的问题很简单,对一个整数进行分解质因数. 首先还是效率非常低的暴力算法,相信大家都会,不多提. 和上次一样,当数达到非常大的时候,分解将变得非常困 ...

  9. 素数判定质因数分解(数论)(Miller Rabin)(Pollard Rho)

    太玄学了! 我真的被概率的魅力折服了.此前我认为1便是1,0.9999999999-便是0.9999999999-. 但实际上它们有着千丝万缕的关系. 试想,如果一件事发生的概率是0.99999999 ...

最新文章

  1. maven依赖decoder_引入依赖maven打包报错
  2. CPU方案简介UIS8190 - LTE CAT.1模块
  3. java的几_Java的几种时间
  4. 与TIME_WAIT相关的几个内核参数
  5. 《Windows游戏编程大师技巧》三、Windows高级编程
  6. C# winform 窗体怎么隐藏标题栏,不显示标题栏
  7. 一个长方体玻璃容器从里面量长宽_养观赏鱼用玻璃鱼缸吗?3种常见养鱼容器,另外2种养鱼效果不差...
  8. 信息系统工程监理服务及营销策略
  9. leetcode题解20-有效的括号
  10. 23种设计模式(四)组件协作之观察者模式
  11. php5.3升级脚本
  12. 关于出现Merge remote-tracking branch ‘origin/develop‘ into develop这种commit记录的原因
  13. office表格标题和表格距离过大怎么解决
  14. Redux 替代品 Zustand
  15. Apollo配置中心热加载mysql_apollo配置中心开发指南
  16. 如何系统学习计算机硬件和软件,怎么升级电脑硬件和软件
  17. 火神山秒建5G基站,“云监工”背后的是通信技术的极限挑战
  18. 在Ubuntu16.04上安装佳能LBP151dw的打印机驱动
  19. 合唱团(2016网易编程题)
  20. 线性代数 --- 向量空间(vector space)与子空间(subspace)

热门文章

  1. 关于SQL 数据库表中的聚集索引和非聚集索引等
  2. C#中的OOP相关概念
  3. 精通机器学习的5本免费电子书(5 free e-books for machine learning mastery)
  4. selenium 在centos中的配置
  5. 请问:hive中avg聚合函数会使用到combiner功能吗?
  6. 使用DOM4J读和写文档
  7. Spring MVC与表单日期提交的问题
  8. ubuntu12.04中sublime输入中文
  9. Web安全***测试之信息搜集篇
  10. 使用ASP.Net 3.5 的Ajax与Web服务开发实例