博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
问题 G: 【一本通提高同余问题】计算器
阅读量:6710 次
发布时间:2019-06-25

本文共 1529 字,大约阅读时间需要 5 分钟。

模板题,最重要的是BSGS算法

#include
using namespace std;long long T,K,opt;long long yy,z,p,ans1,ans2,ans3;long long newans;long long x,y;long long Quickpow(long long x,long long n,long long mod){ long long base=1; while(n) { if(n&1) { base=(long long)base*x%mod; } n>>=1; x=x*x%mod; } return base;}long long Exgcd(long long a,long long &x,long long b,long long &y){ if(b==0) { x=1; y=0; return a; } long long Gcd=Exgcd(b,x,a%b,y); long long tmp; tmp=x; x=y; y=tmp-(a/b)*y; return Gcd;}long long BSGS(long long a,long long b,long long p){ map
hash; hash.clear(); b%=p; int t=(int)sqrt(p)+1; for(int j=0;j
=0&&i*t-j>=0) { return i*t-j; } } return -1;}int main(){ scanf("%lld%lld",&T,&K); while(T--) { if(K==1) { cin>>yy>>z>>p; ans1=Quickpow(yy,z,p); cout<
<
>yy>>z>>p; ans2=Exgcd(yy,x,p,y); if(z%ans2!=0) { printf("Orz, I cannot find x!\n"); continue; } else { newans=((x*(z/ans2))%(p/ans2)+(p/ans2))%(p/ans2); } cout<
<
>yy>>z>>p; ans3=BSGS(yy,z,p); if(ans3==-1) { printf("Orz, I cannot find x!\n"); continue; } else { cout<
<

 

转载于:https://www.cnblogs.com/LJB666/p/11010343.html

你可能感兴趣的文章
express4.x中的链式路由句柄
查看>>
【设计模式】责任者模式
查看>>
IdentityServer4 实现 OpenID Connect 和 OAuth 2.0
查看>>
2017第3周一
查看>>
python中时间操作总结
查看>>
作业调度框架_Quartz
查看>>
node.js博客GitHub搭建(hexo)
查看>>
dwarf调试信息格式入门
查看>>
dedecms的自定义模块
查看>>
ZOJ1450 BZOJ1136 BZOJ1137 HDU3932[最小圆覆盖]
查看>>
推荐一个SAM文件中flag含义解释工具--转载
查看>>
asp.net网站中添加百度地图功能
查看>>
php使用fputcsv进行大数据的导出
查看>>
【架构】分布式追踪系统设计与实现
查看>>
Java继承Exception自定义异常类教程以及Javaweb中用Filter拦截并处理异常
查看>>
fresco xml配置属性不起作用
查看>>
nexus-3本地下载jar的settipng.xml配置
查看>>
activemq控制面板里的NumberOfPendingMessages、MessagesEnqueued、MessagesDequeued含义
查看>>
Java堆(heap)、栈(stack)和队列的区别
查看>>
百度编辑器 UEditor setContent()
查看>>