[Bsgs][ExBsgs]小结

tip.分解质因数可以只枚举到sqrt,剩下的如果不为1,则一定为某个质数的1次幂。

1、Bsgs(要求模数为质数)
用于求A^x同余B(mod C)的最小正整数x。
设m=ceil(sqrt(C)),关于为什么一定在这个范围内有解的证明我不会(逃)。

把x看成i*m-j。A^(i*m-j)同余B,对方程进行一些变换,得到A^i*m同余B*A^j.
然后枚举j从0到m,存到map里,值为j,再枚举i从1到m,检查map中是否存在A^i*m的数,存在的话答案就为i*m-map.

2、ExBsgs(用于解决Bsgs中模数不为质数)
因为模数不是质数了。所以无法把A^-j看成是/A^j(因为此时不互质所以不存在-1次幂)
所以考虑用一些办法使得A和C互质然后Bsgs。所以就不停的求Gcd,把A,B,C不停的除以Gcd,然后使得A,C互质。这里可以看出如果B不能整除Gcd的话方程则无解。
这里写图片描述

最后将答案加上n就好了。

模板可以参考blog中另一篇文章。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值