快速幂模板

求a的b次幂关于c的余数;
int
PowerMod(int a, int b, int c) { int ans = 1; a = a % c; while(b>0) { if(b % 2 = = 1) ans = (ans * a) % c; b = b/2; a = (a * a) % c; } return ans; }

 

已知a=x+y;

a%c=(x%c+y%c)%c

当b为偶数时  a^b=(a^(b/2))^2;

当b为奇数时  a^b=a*(a^(b/2))^2;

posted @ 2020-02-29 14:01  Sonoda_Umi  阅读(99)  评论(0)    收藏  举报