Luogu P4358 密钥破解 题解报告
【题目大意】
给定一个正整数N,可以被分解为两个不同的质数p和q,计算出r=(p-1)*(q-1)。
然后给出了一个小于r且与r互质的整数e,已知e*d≡1(mod r),求d。
最后给定一个数c,求n=cd%N
【思路分析】
这题总体来说思路真的很简单QWQ
首先既然是找因数,那么可以立刻想到Pollard-rho(其实只是因为这是一道Pollard-Rho的模板题)
然后求d的过程就是求e的乘法逆元嘛也很简单
最后求cd,就很明显是快速幂了
于是就……over了!?
【代码实现】
放一波代码就走人吧
其实很玄学……我一开始只过了3个点,其他全部TLE,结果稍微改了一点就AC了
emmmm……好吧不是很懂,反正我已经AC了,下次不再用最开始那种做法就是了QAQ
#include<bits/stdc++.h>
#define ll long long
#define RG register
#define go(i,a,b) for(RG int i=a;i<=b;i++)
using namespace std;
ll fr(){
ll w=,q=;
char ch=getchar();
while(ch<''||ch>''){
if(ch=='-') q=-;
ch=getchar();
}
while(ch>=''&&ch<='')
w=(w<<)+(w<<)+ch-'',ch=getchar();
return w*q;
}
ll e,N,c,p,q,r;
ll gcd(ll x,ll y) {return y==?x:gcd(y,x%y);}
ll mul(ll x,ll y){//快速乘(类似于快速幂的东东)
if(y==||x==) return ;
ll ans=;
while(y){
if(y&) ans+=x,ans%=N;
x=(x<<)%N;y>>=;
}
return ans;
}
ll count(ll x,ll y) {return (mul(x,x)+y)%N;}
void Pollard_Rho(){
ll cc=rand()%N+;
ll x1,x2,d;
x1=x2=rand()%N+;
while(){
x1=count(x1,cc);x2=count(count(x2,cc),cc);
if(x1==x2) {x1=x2=rand()%N+;cc=rand()%N+;}
d=gcd(abs(x2-x1),N);
if(d>&&d<N){p=d;q=N/p;return;}
}
return;
}
ll exgcd(ll a,ll b,ll &x,ll &y){//求乘法逆元
if(b==) {x=;y=;return a;}
ll d=exgcd(b,a%b,x,y);
ll z=x;x=y;y=z-y*(a/b);
return d;
}
ll ksm(ll x,ll y){
ll ans=,num=x;
while(y){
if(y&) ans=mul(ans,num)%N;
num=mul(num,num)%N;
y>>=;
}
return ans;
}
int main(){
srand(time());//这个是取随机数之前一定要写的东东QAQ
e=fr();N=fr();c=fr();
Pollard_Rho();
r=mul(p-,q-);
ll d,D;exgcd(e,r,d,D);
while(d<=) d+=r;
ll n=ksm(c,d);
cout<<d<<" "<<n<<endl;
return ;
}
点击看玄学代码
Luogu P4358 密钥破解 题解报告的更多相关文章
- 【Luogu】P4358密钥破解(Pollard Rho)
题目链接 容易发现如果我们求出p和q这题就差不多快变成一个sb题了. 于是我们就用Pollard Rho算法进行大数分解. 至于这个算法的原理,emmm 其实也不是很清楚啦 #include<c ...
- 洛谷P4358密钥破解 [CQOI2016] 数论
正解:数论 解题报告: 先,放个传送门QwQ 这题难点可能在理解题意,,, 所以我先放个题意QAQ 大概就是说,给定一个整数N,可以被拆成两个质数的成绩p*q,然后给出了一个数e,求d满足e*d=1( ...
- Luogu P4204 神奇口袋 题解报告
题目传送门 [题目大意] 一个口袋里装了t种颜色的球,第i种颜色的球的数目为a[i],每次随机抽一个小球,然后再放d个这种颜色的小球进口袋. 给出n个要求,第x个抽出的球颜色为y,求满足条件的概率. ...
- LG4718 【模板】Pollard-Rho算法 和 [Cqoi2016]密钥破解
Pollard-Rho算法 总结了各种卡常技巧的代码: #define int long long typedef __int128 LL; IN int fpow(int a,int b,int m ...
- 【BZOJ-4522】密钥破解 数论 + 模拟 ( Pollard_Rho分解 + Exgcd求逆元 + 快速幂 + 快速乘)
4522: [Cqoi2016]密钥破解 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 290 Solved: 148[Submit][Status ...
- Visio Premium 2010密钥+破解激活方法
Visio Premium 2010密钥+破解激活方法: 在安装时能够使用下面密钥: GR24B-GC2XY-KRXRG-2TRJJ-4X7DC VWQ6G-37WBG-J7DJP-CY66Y-V27 ...
- 2015浙江财经大学ACM有奖周赛(一) 题解报告
2015浙江财经大学ACM有奖周赛(一) 题解报告 命题:丽丽&&黑鸡 这是命题者原话. 题目涉及的知识面比较广泛,有深度优先搜索.广度优先搜索.数学题.几何题.贪心算法.枚举.二进制 ...
- 2017-2018-1 20155312《信息安全技术》实验二——Windows口令破解实验报告
2017-2018-1 20155312<信息安全技术>实验二--Windows口令破解实验报告 实验目的 了解Windows口令破解原理 对信息安全有直观感性认识 能够运用工具实现口令破 ...
- cojs 强连通图计数1-2 题解报告
OwO 题目含义都是一样的,只是数据范围扩大了 对于n<=7的问题,我们直接暴力搜索就可以了 对于n<=1000的问题,我们不难联想到<主旋律>这一道题 没错,只需要把方程改一 ...
随机推荐
- Python开发【框架篇】Django的Form组件
Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 小试牛刀 1.创建Form类 from dja ...
- Java注解原理
1. @interface不是接口是注解类,使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口,由编译程序自动完成其他细节 2. @in ...
- Elastic Stack-Kibana使用介绍(七)
一.前言 主要来讲述一下Kibana使用以及上生产时候的一些配置,要是大家对这块比较感兴趣我到时候也可以在结合Grafana做一些图表方面的介绍,后面等介绍完Beats以后我去阿里云租几台机器 ...
- postman Installation has failed: There was an error while installing the application. Check the setup log for more information and contact the author
Error msg: Installation has failed: There was an error while installing the application. Check the s ...
- subgradients
目录 定义 上镜图解释 次梯度的存在性 性质 极值 非负数乘 \(\alpha f(x)\) 和,积分,期望 仿射变换 仿梯度 混合函数 应用 Pointwise maximum 上确界 suprem ...
- Spring Boot与缓存
---恢复内容开始--- JSR-107.Spring缓存抽象.整合Redis 一.JSR107 Java Caching定义了5个核心接口,分别是CachingProvider, CacheMana ...
- win10下安装ubuntu18.04
在win10下安装Ubuntu18.04,双系统共存.Ubuntu 18.04 使用的是Gnome桌面. 查看系统的启动模式: Win+R打开运行,输入msinfo32,回车查看系统信息.在BIOS模 ...
- Tomcat7 JDK8 Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000540000000, 5368709120, 0) failed; error='Cannot allocate memory' (errno=12)
[root@crm-web- bin]# shutdown.sh bash: shutdown.sh: command not found [root@crm-web- bin]# sh shutdo ...
- vue省市区三级联动
仿照小米之家做的一个省市区三级联动,先上代码: HTML: <template> <section class="myAddress"> <secti ...
- MT【326】曲线中的爱恨情仇
[我思故我在]----笛卡尔爱心曲线$r=a(1-sin\theta)$ Matrix 67分手曲线