#include <iostream>
using namespace std;
/**
* @param base 底数
* @param power 指数
* @return 求幂结果的最后3位整数
* @longlong范围 -9223372036854775808~9223372036854775807(19位)
* @2^100=1267650600228229401496703205376
*/
long long fastPower(long long base, long long power) {
long long result = 1;
base = base % 1000; // 只需要最后三位
while (power > 0) {
if (power % 2 == 1) {
result = (result * base) % 1000;
}
base = (base * base) % 1000;
power /= 2;
}
return result;
}
int main() {
long long a, b;
cin >> a >> b;
cout << fastPower(a, b) << endl;
return 0;
}
-
快速幂算法:
result
初始为1。- 将
base
对1000取模,因为我们只关心最后三位数。 - 当
power
大于0时,进行循环:- 如果
power
是奇数,更新result
为(result * base) % 1000
。 - 将
base
更新为(base * base) % 1000
。 - 将
power
右移一位(即除以2)。
- 如果
-
主函数:
- 读取输入的两个正整数
a
和b
。 - 调用
fastPower
函数计算a^b
的最后三位数,并输出结果。
- 读取输入的两个正整数