同余与模算术

2019-04-13 14:23发布

(a+b)mod p = (a mod p + b mod p) mod p (a*b)mod p = ((a mod p) * (b mod p)) mod p (a-b)mod p = ((a mod p)-(b mod p) + p) mod p a^b  mod  p= ((a  mod  p)^b) mod  p 结合率:((a+b)  mod  p + c) mod  p = (a + (b+c)  mod p)  mod  p          ((a*b) mod  p * c) mod  p = (a * (b*c)  mod p)  mod  p    交换率: (a + b)  mod  p= (b+a)  mod  p                          (a * b)  mod  p= (b * a)  mod  p                 分配率: ((a +b)mod  p * c)  mod  p= ((a * c)  mod  p + (b * c) mod  p)  mod  p  重要定理: 若a≡b ( mod  p),则对于任意的c,都有(a + c) ≡ (b +c) ( mod p); 若a≡b ( mod  p),则对于任意的c,都有(a * c) ≡ (b *c) ( mod p); 若a≡b ( mod  p),则对于任意的c,都有ac≡ bc ( mod p);  若a-b=c,则a%c=b%c
大数取模:正整数n和m,n<=10100,m<=109. #include #include using namespace std; int main() { string n; int ans=0,m; cin>>n; cin>>m; int len=n.length(); for(int i=0; i
快速幂取模: #include using namespace std; int pow_mod(int a,int n,int m) { if(n==0) return 1; int x=pow_mod(a,n/2,m); long long ans=(long long)x*x%m; if(n%2==1) ans=ans*a%m; return (int)ans; } int main() { int a,n,m; while(cin>>a>>n>>m) cout<