bsgs(数论)
来源:互联网 发布:js strict mode 编辑:程序博客网 时间:2024/05/16 18:55
b(bei)s(shang)g(guang)s(shen)算法
专门用来解决
x^y 同余于 z(mod p)
已知x,z求y
这里写代码片#include<cstdio>#include<map>#define ll long longusing namespace std;const ll mod=99842353;map<ll> mp;ll KSM(ll a,ll p,ll mod){ ll t=1; while (!p) { if (p&1) t=(t*a)%mod; a=(a*a)%mod; p>>=1; } return t;}void bsgs(ll x,ll z,ll p){ mp.clear(); x%=p; // if (x==0&&y==0) return 0; if (x==0) return -1; //不存在的 ll m=ceil(sqrt((double)p)),now=1; //这样计算m肯定没问题 mp[1]=m+1; //x^0==1,mp的下标x^i,数组里记录的是i,因为mp本身就是0,所以用m+1代表0 for (i=1;i<m;i++) { now=(now*x)%p; if (!mp[now]) mp[now]=i; } ll inv=1,tmp=(x,p-m-1,p); //inv x^km逆元 for (int k=0;k<m;k++) //枚举k { int i=mp[(z*inv)%p]; //z*x^-km if (i) { if (i==m+1) i=0; return k*m+i; } inv=(inv*tmp)%p; } return -1;}
阅读全文
0 0
- bsgs(数论)
- bzoj 2219: 数论之神 (BSGS+GCD+数论)
- 数论 BSGS 模板
- BZOJ-2242 计算器 快速幂+拓展欧几里得+BSGS(数论三合一)
- 【bzoj2242】[SDOI2011]计算器 数论相关(快速幂+扩展欧几里得+BSGS)
- 基本数论(从整除入门到欧拉弃坑到中国剩余BSGS跑路)
- 基础数论算法(7) 欧拉函数与BSGS算法
- [poj 2417]Discrete Logging 数论 BSGS
- BZOJ 2219 数论之神 BSGS+CRT
- [数论][二次剩余][BSGS] CodeChef FN
- BSGS
- POJ 2417/BZOJ 3239(Discrete Logging-BSGS)[Template:数论]
- [数论 && 二次剩余 && BSGS] Codechef FN. FIBNACCI NUMBER
- poj3243:Clever Y(BSGS)
- [bzoj 3122] [Sdoi2013]随机数生成器:数论,同余,分类讨论,BSGS
- NOIP模拟赛 数论 积性函数 + BSGS + Lucas模进制数位Dp
- bzoj 2242 [sdoi2011]计算器 (BSGS)
- [BZOJ3239][poj2417]Discrete Logging(BSGS算法)
- [LeetCode]226. Invert Binary Tree--反转二叉树
- C++ 将指定文件夹下的所有文件拷贝到另一文件夹下
- GPU编程自学1 —— 引言
- hdoj 6043(2017 Multi-University Training Contest
- 对于PHP语法你了解多少?
- bsgs(数论)
- SQL Server 时间查询整理
- UPC 2017 Summer Training 1
- 【JavaSE学习笔记】集合02_Set
- 关于drawble文件夹和mipmap文件夹下的图片
- java.io.IOException: invalid constant type: 15
- mybatis调用ORACLE存储过程
- plsql
- WebRTC系列(2):room server,signaling server 和客户端之间的交互