题目链接:http://acm.zzuli.edu.cn/showproblem?problem_id=1118
刚看此题时也是不知道怎么想,可能是自己算法还不够精,于是便百度一下解题方法,看到之后,感觉此题并不是要求很高深得算法,一般般处理即可,于是凭感觉小心翼翼的写了一下代码,虽然不知道是不是有点罗嗦,但是感觉能够得到正确答案,于是提交,幸运的是1A了;代码如下:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
#include <stdio.h>
int ans(int a,int b)///此函数是递归处理的,在递归结束的时候就能得到所需答案
{
int i,j;
if(b%2==0)
{
i=a*a%1000;
j=ans(i,b/2);
return j%1000;
}
else if(b==1) ///递归出口
return a%1000;
else
{
i=a*a%1000;
j=a*ans(i,b/2);
return j%1000;
}
}
int main()
{
int n,m,f;
while(scanf("%d%d",&n,&m))
{
if(n==0&&m==0) ///测数据中可能不存在单独为零的情况,就算有,在下面加if else即可;
break;
f=ans(n,m);
printf("%d\n",f%1000);
}
return 0;
}