BSGS(a^x%p=b)
来源:互联网 发布:纳网科技域名续缴费 编辑:程序博客网 时间:2024/04/30 08:11
问题
已知a,b,p求x
解法
令x=i*m-j (m=
j(0~m)
i(1~m) 若map中存在一个元素与a^mi%p相等则返回x
code
#include<cstdio>#include<map>#include<vector>#include<cmath>#include<climits>#include<cstring>typedef long long ll;using namespace std;#define f(x,y,z) for(int x=y;x<=z;x++)ll p,m,a,b;map<ll,ll> ma;bool ok;ll ksm(ll x,int y){ if(y==0)return 1; ll t=ksm(x,y/2); if(y%2==0)return t*t%p; return t*t%p*x%p;}int main(){ scanf("%lld",&p); m=sqrt(p); if(m*m<p)m++; while(~scanf("%lld%lld",&a,&b)) { ma.clear(); f(j,0,m)ma[(ksm(a,j)*b)%p]=j; ok=0; f(i,1,m)if(ma.find(ksm(a,m*i))!=ma.end()) { ok=1; printf("%lld\n",i*m-ma[ksm(a,m*i)]); break; } if(!ok)printf("0\n"); } return 0;}
0 0
- BSGS(a^x%p=b)
- 解一类A^x=B(mod C)(C是质数)的方程 (BSGS)
- 解一类x^a = b (mod p)的方程
- p(a|b)=p(ab)/p(b)为什么?
- A *p=new B;
- hdu2837 Calculation a^b%p=a^(b%phi(p)+phi(p))%p
- POJ 2417 Discrete Logging(BSGS算法,gcd(a,p)=1)
- POJ 3243 Clever Y(扩展BSGS,gcd(a,p)!=1)
- A+B=X
- class A 和 class B: public A中A a; B b; A *p = &a; p->foo();相关题目
- 1063 A^B%P
- XDOJ1265 - A^B % P
- A^X mod P
- A^X mod P
- A^X mod P
- hdu3221 Brute-force Algorithm矩阵快速幂&&a^b%p=a^(b%phi(p)+phi(p))%p b>=phi(p)
- 为什么A *a=new B不直接写成B b,或者B *p呢?
- hdu 3930 X^N=a(mod) p 求X
- Hdu 3662 3D Convex Hull(三维凸包)
- 找女朋友
- JavaWeb学习篇之----Servlet过滤器Filter和监听器
- chapter2、操作系统简介
- hdu 1814
- BSGS(a^x%p=b)
- 关于计算几何
- 多个线程执行多个任务,解决该问题的死锁问题
- Ubuntu下Crtmp服务器的搭建及过程中遇到的问题解决方法
- xml四种解析技术 简述 优缺点
- 一台机器上安装两个tomcat
- NandFlash和NorFlash的区别
- 【JZOJ 4710】Value
- 【docker】docker在ubuntu中的安装与部署