HDOJ 2035 人見人愛A^B 九度教程第57題 快速冪模板題

題目鏈接

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;
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章