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
解題思路:
快速冪模板題目
帶求模運算的快速冪模板:
typedef long long ll;
ll mod_pow(ll x, ll n, ll mod) {
ll res = 1;
while (n > 0) {
if (n & 1)res = res*x%mod;
x = x*x%mod;
n >>= 1;
}
return res;
}
AC代碼:
#include<iostream>
using namespace std;
typedef long long ll;
ll mod_pow(ll x, ll n, ll mod) {
ll res = 1;
while (n > 0) {
if (n & 1)res = res*x%mod;
x = x*x%mod;
n >>= 1;
}
return res;
}
int main() {
ll a, b, mod = 1000;
while (cin >> a >> b) {
if (a == 0 && b == 0) {
break;
}
cout << mod_pow(a, b, mod) << endl;
}
}