思路挺简单的,
1)对指数进行奇偶判断,如果是奇数应先乘以'底数'取余,如果是偶数则继续
2)不停地将指数除以二,而且 对'底数'相乘取余得一个新的‘底数’
#include<stdio.h>
int fp(long long a,long long b,long long c)//a底数,b指数,c保留位数
{
int ans=1;
a=a%c;
while(b>0)
{
if(b%2==1) ans=(ans*a)%c;
b/=2;
a=(a*a)%c;
}
return ans;
}
int main()
{
long long a,b;
while(scanf("%lld%lld",&a,&b)&&a&&b)
printf("%d\n",fp(a,b,1000));
return 0;
}