一、威尔逊定理
若p为质数,则
p|(p-1)!+1
亦:(p-1)! ≡ p-1 ≡ -1(mod p)
例题:
HDU 2973 YAPTCHA (威尔逊定理及其逆定理)
解题报告见http://blog.csdn.net/synapse7/article/details/18728157
二、费马小定理
假如p是质数,且gcd(a,p)=1,那么
a^(p-1) ≡1(mod p)
我们可以利用费马小定理来简化幂模运算:由于a^(p-1)≡a^0≡1(mod p),所以a^x(mod p)有循环节,长度为p-1,所以a^x≡a^(x%(p-1))(mod p)
例题:
HDU 4549 M斐波那契数列 (费马小定理降幂&矩阵快速幂)
HDU 4196 Remoteland
三、欧拉定理
若a,m为正整数,且gcd(a,m) = 1,则
a^φ(m)≡1(mod m)
我们亦可以利用欧拉定理来简化幂模运算:a^x≡a^(x%φ(m))(mod m)
例题:
HDU 1395 2^x mod n = 1 (欧拉定理 分解素因数)
HDU 3221 Brute-force Algorithm (矩阵 欧拉定理降幂)
为下一节做铺垫,我们将a^x≡a^(x%φ(m))(mod m)变下形:
由于a^φ(m)≡1(mod m)
a^x≡a^(x%φ(m))≡a^(x%φ(m)+φ(m))(mod m)
四、求幂大法
(广义欧拉定理)及其证明
对于同余式a^b≡x(mod m),如何求出x?(1<=a,m<=1000000000,1<=b<=10^1000000)
注意到b很大,我们可以先采取一些方法降幂。
若gcd(a,m)=1,那么使用欧拉定理即可:a^b≡a^(b%φ(m))(mod m)
若gcd(a,m)>1,且b>φ(m),则有“求幂大法”——a^b≡a^(b%φ(m)+φ(m))(mod m)
(当b<=φ(m)时直接用快速幂即可)
例题:
FZU 1759 Super A^B mod C
HDU 2837 Calculation
HDU 5895 Mathematician QSC (矩阵 求幂大法)题解见Here
若p为质数,则
p|(p-1)!+1
亦:(p-1)! ≡ p-1 ≡ -1(mod p)
例题:
HDU 2973 YAPTCHA (威尔逊定理及其逆定理)
解题报告见http://blog.csdn.net/synapse7/article/details/18728157
二、费马小定理
假如p是质数,且gcd(a,p)=1,那么
a^(p-1) ≡1(mod p)
我们可以利用费马小定理来简化幂模运算:由于a^(p-1)≡a^0≡1(mod p),所以a^x(mod p)有循环节,长度为p-1,所以a^x≡a^(x%(p-1))(mod p)
例题:
HDU 4549 M斐波那契数列 (费马小定理降幂&矩阵快速幂)
HDU 4196 Remoteland
三、欧拉定理
若a,m为正整数,且gcd(a,m) = 1,则
a^φ(m)≡1(mod m)
我们亦可以利用欧拉定理来简化幂模运算:a^x≡a^(x%φ(m))(mod m)
例题:
HDU 1395 2^x mod n = 1 (欧拉定理 分解素因数)
HDU 3221 Brute-force Algorithm (矩阵 欧拉定理降幂)
为下一节做铺垫,我们将a^x≡a^(x%φ(m))(mod m)变下形:
由于a^φ(m)≡1(mod m)
a^x≡a^(x%φ(m))≡a^(x%φ(m)+φ(m))(mod m)
四、求幂大法
(广义欧拉定理)及其证明
对于同余式a^b≡x(mod m),如何求出x?(1<=a,m<=1000000000,1<=b<=10^1000000)
注意到b很大,我们可以先采取一些方法降幂。
若gcd(a,m)=1,那么使用欧拉定理即可:a^b≡a^(b%φ(m))(mod m)
若gcd(a,m)>1,且b>φ(m),则有“求幂大法”——a^b≡a^(b%φ(m)+φ(m))(mod m)
(当b<=φ(m)时直接用快速幂即可)
例题:
FZU 1759 Super A^B mod C
HDU 2837 Calculation
HDU 5895 Mathematician QSC (矩阵 求幂大法)题解见Here