题目链接:http://acm.zzuli.edu.cn/showproblem?problem_id=1118

 

刚看此题时也是不知道怎么想,可能是自己算法还不够精,于是便百度一下解题方法,看到之后,感觉此题并不是要求很高深得算法,一般般处理即可,于是凭感觉小心翼翼的写了一下代码,虽然不知道是不是有点罗嗦,但是感觉能够得到正确答案,于是提交,幸运的是1A了;代码如下:

View Code
#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;
}



posted on 2011-11-13 19:46  world_ding  阅读(194)  评论(0编辑  收藏  举报