法一:费马小定理:a^p(mod p)等价于1(mod p),前提为a,p互质;当p为质数时,a^(p-2)(mod p) 为a的逆元,快速幂求解下
/**/
#include
#include
#include
#include
#include
#include
#include
法二:扩展欧几里德:ax+by=gcd(x,y);
我们这里用的是ax+by=1时的情况,就是x与y互质时。
/**/
#include
#include
#include
#include
#include
#include
#include
第三种公式法;
假如求a%p的a的逆元:
设 x = p % a, y = p / a;
那么p = x + y * a;
两边同时mod p得
0 = x % p + y * a % p;
(-y) * a % p = x % p;
把a移到右边得
inv(a) * x % p = (-y) % p;
再把x移过去
inv(a) % p = inv(x) *(-y) % p;
inv(a) = (p-y) * inv(x) % p;
所以: inv(a) = (p - p / a) * in(p % a) % p;
/**/
#include
#include
#include
#include
#include
#include
#include