HDU 2035.人见人爱A^B-快速幂

人见人爱A^B

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 53859    Accepted Submission(s): 35959


Problem Description
求A^B的最后三位数表示的整数。
说明:A^B的含义是“A的B次方”
 

 

Input
输入数据包含多个测试实例,每个实例占一行,由两个正整数A和B组成(1<=A,B<=10000),如果A=0, B=0,则表示输入数据的结束,不做处理。
 

 

Output
对于每个测试实例,请输出A^B的最后三位表示的整数,每个输出占一行。
 

 

Sample Input
2 3 12 6 6789 10000 0 0
 

 

Sample Output
8 984 1
 

 

Author
lcy
 

 

Source
 

 

 

代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cstring>
 5 #include<cstdlib>
 6 #include<string.h>
 7 #include<set>
 8 #include<vector>
 9 #include<queue>
10 #include<stack>
11 #include<map>
12 #include<cmath>
13 using namespace std;
14 typedef long long ll;
15 const int mod=1000;
16 ll kuaisumi(ll a,ll b){
17      ll ans=1;
18      while(b){
19          if(b%2==1){
20              ans=ans*a%mod;
21          }
22          a=a*a%mod;
23          b=b/2;
24      }
25      return ans;
26  }
27 int main(){
28     int n,m;
29     while(~scanf("%d%d",&n,&m)){
30         if(n==0&&m==0)break;
31         ll ans=kuaisumi(n,m);
32         printf("%lld\n",ans%1000);
33     }
34     return 0;
35 }

 

posted @ 2017-03-01 18:47  ZERO-  阅读(217)  评论(0编辑  收藏  举报