除法取模
来源:互联网 发布:js 获取标签的name 编辑:程序博客网 时间:2024/05/16 05:07
做题时,经常要求“答案模一个数”的结果。
并且这个数往往是1000000007。
如果只有乘法和加法,那么我们对此毫无压力。
但是,除法出现时,我们往往需要用高精除法。
而费马小定理给我们带来了福音!从此,我们再不用为了区区一个模1000000007而用高精除法了。
费马小定理:若p是质数,且a、p互质,那么a^(p-1) mod p = 1。
果断忽略证明...
现在,我们要求a/c mod p,通过一系列神奇的转化,那万恶的除法就会神奇地消失...
a / c mod p
= a / c mod p * 1
= a / c mod p * c^(p-1) mod p
= a * c^(p-2) mod p
转化完毕。
当c与p不互质的时候,费马小定理就无能为力了。
其实,我们还有另一种方法。
设a / c = b,要求b mod p
a = k1*p + b1,
b = k2*p + b2,
则目标就是求b2
那么原式化为(k1*p + b1) / c = (k2*p + b2)
b2*c + p(k2*c - k1) = b1
设k2*c - k1 = x, b2 = y,那么px + cy = b1,其中p、c和b1已知,则可通过不定方程求解得到y',调整y'使0<=y'<p即可。
并且这个数往往是1000000007。
如果只有乘法和加法,那么我们对此毫无压力。
但是,除法出现时,我们往往需要用高精除法。
而费马小定理给我们带来了福音!从此,我们再不用为了区区一个模1000000007而用高精除法了。
费马小定理:若p是质数,且a、p互质,那么a^(p-1) mod p = 1。
果断忽略证明...
现在,我们要求a/c mod p,通过一系列神奇的转化,那万恶的除法就会神奇地消失...
a / c mod p
= a / c mod p * 1
= a / c mod p * c^(p-1) mod p
= a * c^(p-2) mod p
转化完毕。
当c与p不互质的时候,费马小定理就无能为力了。
其实,我们还有另一种方法。
设a / c = b,要求b mod p
a = k1*p + b1,
b = k2*p + b2,
则目标就是求b2
那么原式化为(k1*p + b1) / c = (k2*p + b2)
b2*c + p(k2*c - k1) = b1
设k2*c - k1 = x, b2 = y,那么px + cy = b1,其中p、c和b1已知,则可通过不定方程求解得到y',调整y'使0<=y'<p即可。
- 除法取模
- 除法和取模
- 除法取模
- 除法的取模
- 除法的取模运算
- Python 除法和取模
- python中的除法和取模
- 除法取模与逆元
- Python中的除法和取模
- 整数的除法和取模
- C/C++除法及取模
- 乘法逆元(除法取模)
- 51nod 1119 除法取模
- 除法取模(逆元)
- python中的除法和取模
- 除法运算、商、余数与取模
- 除法取模与逆元
- 移位运算与除法、取模运算
- find a way to escape
- Fibonacci数列
- 【C语言】——忽略大小写比较字符串
- 【VirtualBox打开出错】创建COM对象失败(XP3系统)
- SolrCloud 译文以及一些使用注意细节
- 除法取模
- 硬盘安装Debian与Xp双系统
- 查看gcc/g++默认include路径
- 解决JAVA EE项目中JSP无法显示绝对路径图片
- 试试vs2012
- Eclipse中修改tomcat内存大小
- 64位系统安装ODBC驱动的方法
- 9patch制作.9.png图并应用到android实例中
- 网络娱乐“被色情”,媒体误读的三种猜测