Idiot 的乘幂
2015-08-20 10:21
531 查看
题目大意及模型转换
给定两个同余方程XA≡B(modP),XC≡D(modP)。求方程小于P的解。其中GCD(A,C)=1,GCD(B,P)=1,GCD(D,P)=1。暴力解法
枚举P以内的数代入验证。一种思考
这个方程难解,不过我们可以考虑以下方程。XA≡B(modP)
XA+1≡D(modP)
那么我们可以得到
BX≡D(modP)
显然两边同乘以B关于P的逆元B−1
就可以变为
X≡DB−1(modP)
因此,将原方程化为上面这样的方程,会比较好做。
更快的暴力
我们现在只需要解出ax-cy=1或cy-ax=1。可以用辗转暴力法。
对于a和c,如果a>c变为a-c和c,否则变为a和c-a。由于保证了gcd(a,c)=1,因此最后a和c会变成相差为1。
扩展欧几里德解方程
上面那个方程实际上可以化为ax+cy=1,然后解出来后变为正数做快速幂搞搞搞。首先我们来学习一下裴蜀定理。
对于a和b,gcd(a,b)=d。那么方程ax+by=d一定存在整数解。
先来个werkeytom感性理解证法。
我们设a′=ad,b′=bd,显然gcd(a′,b′)=1。
逆元大家都知道吧,互质的数互相存在逆元。
ax+by=d有解,那么肯定a′x+b′y=1也有解。
可以化为a′x≡1(mod b′)
那么就得证了。
扩展欧几里德算法就是用来解ax+by=d这样的方程。
具体算法步骤自行百度。
那么通过扩展欧几里德算法可以解出ax+cy=1这个方程,然后进行快速幂,最后化为相差为1的方程。求逆元也可以用扩展欧几里德算法。此题完美解决。
注意
最后得出的解要代入验证看是否是真的解(如果不是,则无解)。相关文章推荐
- (转)利用libcurl和国内著名的两个物联网云端通讯的例程, ubuntu和openwrt下调试成功(四)
- 超轻量级、高性能C日志库--EasyLogger
- 微软 Windows 10 物联网版系统 IoT 介绍 树莓派2 可以装一下
- 微软 Windows 10 物联网版系统 IoT 介绍 树莓派2 可以装一下
- IOT 案例 - 建筑结构实时监测
- Android( Brillo )物联网平台与智慧医院设计
- 树莓派与window 10组成的物联网核心:让人失望
- Windows 10 IoT Core 正式版进阶体验
- 谈谈云计算、物联网
- UVA 10881 - Piotr‘s Ants
- Windows 10 IoT Core 正式版初体验
- hdu4609 3-idiots
- 智能设备是如何连接云的
- 如何应用MQTT协议到物联网中(IOT)
- 物联网
- 物联网架构演进和微信智能设备平台开发
- 【Windows 10 IoT - 3】Windows 10 RTM安装及新特性(树莓派 Pi2)
- Windows 10 IoT Serials 2 - Windows 10 IoT RTM 升级教程
- BZOJ3513: [MUTC2013]idiots
- 物联网带来晋升机会 首席物联官成急缺职位