【模板】Big-Step-Giant-Step 大步小步
求一个
的最小整数解
bsgs 当h是质数的时候使用
extbsgs 不满足上面那种情况的时候
具体参见http://tonyfang.is-programmer.com/posts/178997.html
ll gcd(ll a,ll b) {
return b?gcd(b,a%b):a;
}
ll bsgs(ll A,ll B,ll C) {
ll m,v,e=1,i;
m=ceil(sqrt(C));
map<ll,ll> hash;
hash[1]=m;
for (i=1;i<m;++i) {
e=(e*A)%C;
if(!hash[e]) hash[e]=i;
}
e=e*A%C;
e=inverse(e,C);
for (i=0;i<m;++i) {
if(hash[B]) {
ll ret=hash[B];
hash.clear();
return i*m+(ret==m?0:ret);
}
B=(B*e)%C;
}
return -1;
}
ll extbsgs(ll a,ll b,ll c) {
ll t,d=1,cnt=0;
while((t=gcd(a,c))!=1) {
if(b%t) return -1;
b/=t, c/=t;
d=d*a/t%c;
cnt++;
if(d==b) return cnt;
}
b=b*inverse(d,c)%c;
ll ret=bsgs(a,b,c);
if(ret==-1) return -1;
else return cnt+ret;
}
void q2(){
//BSGS
if(!f)
cout<<-1<<endl;
else
cout<<extbsgs(g,f,h)<<endl;
}
【模板】Big-Step-Giant-Step 大步小步的更多相关文章
- 『高次同余方程 Baby Step Giant Step算法』
高次同余方程 一般来说,高次同余方程分\(a^x \equiv b(mod\ p)\)和\(x^a \equiv b(mod\ p)\)两种,其中后者的难度较大,本片博客仅将介绍第一类方程的解决方法. ...
- 【学习笔记】Baby Step Giant Step算法及其扩展
1. 引入 Baby Step Giant Step算法(简称BSGS),用于求解形如\(a^x\equiv b\pmod p\)(\(a,b,p\in \mathbb{N}\))的同余方程,即著名的 ...
- POJ 3243 Clever Y (求解高次同余方程A^x=B(mod C) Baby Step Giant Step算法)
不理解Baby Step Giant Step算法,请戳: http://www.cnblogs.com/chenxiwenruo/p/3554885.html #include <iostre ...
- 解高次同余方程 (A^x=B(mod C),0<=x<C)Baby Step Giant Step算法
先给出我所参考的两个链接: http://hi.baidu.com/aekdycoin/item/236937318413c680c2cf29d4 (AC神,数论帝 扩展Baby Step Gian ...
- 数论之高次同余方程(Baby Step Giant Step + 拓展BSGS)
什么叫高次同余方程?说白了就是解决这样一个问题: A^x=B(mod C),求最小的x值. baby step giant step算法 题目条件:C是素数(事实上,A与C互质就可以.为什么?在BSG ...
- 【POJ2417】baby step giant step
最近在学习数论,然而发现之前学的baby step giant step又忘了,于是去翻了翻以前的代码,又复习了一下. 觉得总是忘记是因为没有彻底理解啊. 注意baby step giant step ...
- [置顶] hdu2815 扩展Baby step,Giant step入门
题意:求满足a^x=b(mod n)的最小的整数x. 分析:很多地方写到n是素数的时候可以用Baby step,Giant step, 其实研究过Baby step,Giant step算法以后,你会 ...
- HDU 2815 Mod Tree 离散对数 扩张Baby Step Giant Step算法
联系:http://acm.hdu.edu.cn/showproblem.php?pid=2815 意甲冠军: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQ ...
- HDU 2815 扩展baby step giant step 算法
题目大意就是求 a^x = b(mod c) 中的x 用一般的baby step giant step 算法会超时 这里参考的是http://hi.baidu.com/aekdycoin/item/2 ...
- POJ 2417 Discrete Logging ( Baby step giant step )
Discrete Logging Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 3696 Accepted: 1727 ...
随机推荐
- [转]GCC参数详解
[介绍] gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成 ...
- UI6_UIAlertContrller
// // ViewController.m // UI6_UIAlertContrller // // Created by zhangxueming on 15/7/7. // Copyright ...
- UI2_IOS坐标系
// // AppDelegate.m // UI2_IOS坐标系 // // Created by zhangxueming on 15/6/29. // Copyright (c) 2015年 z ...
- javascript 获取项目根路径
/** * http://localhost:8088/projectName */ function getRootPath(){ //获取当前网址,如: http://localhost:8088 ...
- wordpress忘记密码重置
一直使用浏览器记录密码的方式登陆wordpress,直到有一天重装系统,而浏览器的记录又没有备份,结果怎么也想不起当初所设定的密码了…… -_-||| 遂google了一番,发现了直接修改数据库重设密 ...
- nginx作反向代理,实现负载均衡
nginx作反向代理,实现负载均衡按正常的方法安装好 ngixn,方法可参考http://www.cnblogs.com/lin3615/p/4376224.html其中作了反向代理的服务器的配置如下 ...
- CSS3制作立体导航
<ul class="nav"> <li><a href="">首页</a></li> <li ...
- php foreach 操作数组的代码
php foreach 操作数组的代码. foreach()有两种用法: foreach(array_name as $value) { statement; } 这里的array_na ...
- CSS3 animation小动画
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- MySQL excel导入错误 Out of range value adjusted for column
修改my.ini,将 sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"改为 sql ...