原理:a^b=a^(Binary(b))
例如: 2^3=2^(11)=2^(10+01)=(2^10)*(2^01); 而二進制中每後一位的權重都是前一位的2倍,故(2^10)=(2^01)*(2^01)。
#include<bits/stdc++.h>
using namespace std;
long long arr[100];
int main(){
long long num;
long long val,temp1,temp2;
while(scanf("%lld%lld",&num,&val)!=EOF&&num!=0){
temp1=1;
while(val!=0){
if(val%2==1) temp1*=num;
val/=2;
num*=num;
num%=1000;
temp1%=1000;
}
printf("%lld\n",temp1);
}
return 0;
}