人见人爱A^B
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
水题一道
通过递归来简化次方的预算,要点是每层递归都要取其最后三位数,并且要注意b的奇偶性
附上源代码
1 #include <iostream> 2 using namespace std; 3 4 int power( int a, int b ); 5 int main (){ 6 7 int A,B; 8 cin>>A>>B; 9 while ( A!=0 && B!=0 ) 10 { 11 cout<<power(A,B) % 1000<<endl; 12 cin>>A>>B; 13 } 14 } 15 int power( int a, int b ){ 16 if ( b == 3 ) 17 { a = a%1000;return a*a*a; } 18 else if ( b == 2 ) 19 { a = a%1000;return a*a; } 20 21 if ( b%2 == 1 ) 22 return (power(a,b/2) % 1000) * (power(a,b/2+1) % 1000); 23 else 24 return (power(a,b/2) % 1000) * (power(a,b/2) % 1000); 25 }