【模板】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 ...
随机推荐
- (转)消息中间件的技术选型心得-RabbitMQ、ActiveMQ和ZeroMQ
RabbitMQ.ActiveMQ和ZeroMQ都是极好的消息中间件,但是我们在项目中该选择哪个更适合呢?很多开发者面临这个烦恼.下面我会对这三个消息中间件做一个比较,看了后你们就心中有数了. Rab ...
- 移动Web轮播图IOS卡顿的问题
晚饭前,被测试吐槽说,banner轮播手动左右滑的时候会卡顿.我一看不科学啊,大水果手机怎么会卡顿.我一看测试手中拿的是iPod,我觉得大概是这小玩意性能不强悍,后来又拿来5S,依然会卡顿,有趣的是, ...
- 杭电ACM2061--Treasure the new start, freshmen!
http://acm.hdu.edu.cn/showproblem.php?pid=2061 这题很简单.注意换行. <span style="font-size:18px;" ...
- jQuery 表单验证 jquery.validator.js
前端开发中经常会碰到表单的制作,其中必备的功能就是提交前的一些简单的验证,非空啊.手机号码啊.E-mail等等等等,这里是一个 jQuery 的表单验证插件,蛮好用的,收录一下. 下面是验证的效果图: ...
- <Linux下echo指令>
echo这个命令我们最常见的还是在shell脚本中的使用,if语句,for语句,case语句....这些都不是对echo命令的全面了解.下面还有很多其他echo的参数: 来自本人的日常生活,和对资料查 ...
- 《Linux系统静态路由和火墙路由》
本篇主要写的是关于静态路由表的添加,和如何让你不能上网的主机通过火墙路由表实现上网的功能. 静态路由表: 要是你的主机是2块网卡,并且做了网卡的绑定,依照我下面的方法是成功不了的,你可以去编辑: # ...
- Android BroadcasetReceiver
ci@clinux:~/mp_mtk$ adb -s QGAEFYAAOFN7PNOB logcat PhoneReceiver:e *:S --------- beginning of system ...
- 图片剪裁上传插件 - cropper
图片剪裁上传插件 - cropper <style> .photo-container{float: left;width: 300px;height: 300px;} .photo-co ...
- JQuery在iframe中实现 点击后选中当前栏目的样式
二级或者三级折叠菜单参考http://www.cnblogs.com/qigege/p/5178947.html <script type="text/javascript" ...
- Markdown 使用说明
使用说明 ========= @[手册|帮助|Markdown] - **马克飞象**是一款专为印象笔记打造的Markdown编辑器. - 特别需要说明的一点是增加了`@(笔记本)[标签]`语法,以此 ...