幂取模(数论初步) By ACReaper
所谓的幂取模就是a ^ n mod m的值。(m 小于a ^n的位数)
我们可以很容易想到对于要计算这个可以采用分治思想,优化算法,也就是计算a ^ n,我们只需要计算 a ^ n/2依次类推,于是有如下代码:
#include <stdio.h> int pow_mod(int a,int n,int m){ if(n == 0) return 1 % m; if(n == 1) return a % m; 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(scanf("%d%d%d",&a,&n,&m) != EOF){ printf("%d\n",pow_mod(a,n,m)); } return 0;