博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj2480: Spoj3105 Mod
阅读量:5085 次
发布时间:2019-06-13

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

exBSGS~

就是多个约分

#include
#include
#include
#include
#include
#include
#include
using namespace std;typedef long long LL;LL gcd(LL a,LL b){ if(a==0)return b; return gcd(b%a,a);}LL quick_pow(LL A,LL p,LL mod){ LL ret=1; while(p!=0) { if(p%2==1)ret=(ret*A)%mod; A=(A*A)%mod;p/=2; } return ret;}map
Hash;LL exBSGS(LL a,LL p,LL b){ a%=p;b%=p; if(b==1)return 0; LL d=gcd(a,p),v=1,cnt=0; while(d!=1) { if(b%d!=0)return -1; b/=d;p/=d; v=v*(a/d)%p; cnt++; if(b==v)return cnt; d=gcd(a,p); } //rf Hash.clear(); LL t=(LL(sqrt(double(p+1)))); LL k=1; for(int j=0;j
=0)return t*i-j+cnt; } k=(k*a)%p; } return -1; }}int main(){// freopen("1.in","r",stdin);// freopen("1.out","w",stdout); LL a,p,b; while(scanf("%lld%lld%lld",&a,&p,&b)!=EOF) { if(a==0&p==0&&b==0)break; if(p==1)printf("0\n"); else { LL d=exBSGS(a,p,b); if(d==-1)printf("No Solution\n"); else printf("%lld\n",d); } } return 0;}

 

转载于:https://www.cnblogs.com/AKCqhzdy/p/9334490.html

你可能感兴趣的文章
代码实现导航栏分割线
查看>>
大数据学习系列(8)-- WordCount+Block+Split+Shuffle+Map+Reduce技术详解
查看>>
Mysql性能调优
查看>>
ES6内置方法find 和 filter的区别在哪
查看>>
Android实现 ScrollView + ListView无滚动条滚动
查看>>
硬件笔记之Thinkpad T470P更换2K屏幕
查看>>
getElement的几中属性介绍
查看>>
HTML列表,表格与媒体元素
查看>>
设计器 和后台代码的转换 快捷键
查看>>
STL容器之vector
查看>>
数据中心虚拟化技术
查看>>
复习文件操作
查看>>
SQL Server 使用作业设置定时任务之一(转载)
查看>>
第二阶段冲刺-01
查看>>
BZOJ1045 HAOI2008 糖果传递
查看>>
JavaScript 克隆数组
查看>>
eggs
查看>>
python3 生成器与迭代器
查看>>
java编写提升性能的代码
查看>>
list 容器 排序函数.xml
查看>>