设:a%m = r1, b % m = r2, 则:(a*b) % m = (a%m)*(b%m)%m;
令: a = k1 *m + r1, b = k2 * m + r2;
则:a*b = ( k1*m+r1 ) * (k2*m + r2) = (k1*k2*m^2 + k1*m*r2 + k2*m*r1 + r1*r2)
=> (a*b)%m = (k1*k2*m^2 + k1*m*r2 + k2*m*r1 + r1*r2)%m = (r1 * r2)%m = (a%m)*(b%m)%m;
当a = b 时 ( a^2 )%m = (a%m) * (b%m) %m; (a^n) %m = (a%m)*·················*(a%m)%m;
由于数据不是很大,完全可以逐项计算下去:
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int main()
{
int sum ;
int A, B;
while(cin>>A>>B, A, B)
{
sum = 1;
for(int i= 1; i <= B; ++i)
sum = sum * A % 1000;
cout<<sum<<endl;
}
return 0;
}