BSGS(Baby Steps,Giant Steps)算法详解

本文介绍BSGS算法,一种解决Ax≡B(modC)问题的方法。通过分块思想,将未知数表示为i*m-j的形式,进而降低求解时间至O(C^0.5)。文章还提供了一个具体例题及其解答链接。

BSGS(Baby Steps,Giant Steps)算法详解

简介:

  此算法用于求解 Ax≡B(mod C);

  由费马小定理可知;

  x可以在O(C)的时间内求解;  在x=c之后又会循环;

  而BSGS(拔山盖世)算法可以在O(C0.5)的时间内求解出;


内容:

  主要运用分块的思想;

  将 x=i*m-j,其中m=ceil(sqrt(C));

  A(i*m-j)≡B(mod C);

  Ai*m / A≡ B(mod C);

  Ai*m ≡ B * Aj(mod C);

  枚举每个j(0<=j<=m),将B*Aj存入map;

  再枚举每个i(0<=i<=m),判断Ai*m是否在map中存在值;

 


例题:

  [SDOI2011]计算器   题解见http://www.cnblogs.com/WQHui/p/7592381.html;

  

  

 

转载于:https://www.cnblogs.com/WQHui/p/7592513.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值