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<stdio.h>
#include<iostream>
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\n", pow_mod(a,p,m));
}
}