Openjudge-整数模

2019-04-13 13:50发布

4:整数模

总时间限制: 5
000ms
内存限制: 
32768kB
描述
a除以m的余数称为a对于m的模。求ap对于m的模。
输入
输入数据中含有一些数据组,每个数据组含有a、p、m(0<a,p<2^32,1≤m<2^16)三个整数。若三个数都为0,则输入结束。
输出
针对每组a,p,m,以一行的形式输出ap对于m的模。
样例输入
3 18132 17 0 0 0 
样例输出
13
#include #include using namespace std; long long pow_mod(long long a, long long p, long long m) { long long digit[32]; long long i, k, res=1; i=0; while(p) { digit[i++]=p%2; p>>=1; } for(k=i-1;k>=0;k--) { res=(res*res)%m; if(digit[k]==1) { res=(res*a)%m; } } return res; } int main() { long long a,p,m; while(scanf("%lld%lld%lld", &a, &p, &m)==3) { if(a==0&&p==0&&m==0) break; printf("%lld ", pow_mod(a,p,m)); } }