超大次幂思路

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
 
 
 1 #include <iostream>
 2 #include <string>
 3 #include <cmath>
 4 using namespace std;
 5 
 6 
 7 int main()
 8 {
 9           int m,n;
10           while(cin>>m>>n)
11           {
12                     if(m==0 && n == 0)
13                               break;
14                     int a = 0,b=0,c=0;
15                     int k = m;
16                     for(int i = 1;i<n;i++)
17                     {
18                               k*=m;
19                               a = k%10;
20                               if(k/10>0)
21                                         b = k%100/10;
22                               if(k/100>0)
23                                         c = k%1000/100;
24                               k = a+b*10+c*100;
25                     }
26                     //对于超大次幂,可以只保存最后三位,而不保存整个数字
27                     cout<<k<<endl;
28 
29           }
30                     return 0;
31 }

 

 
 
 
posted @ 2015-11-10 15:27  qlky  阅读(181)  评论(0编辑  收藏  举报