B2075 幂的末尾
思路
结果只取最后三位,而之前的数不会参与幂的计算
所以第三位之前的数肯定和结果无关
可以每乘一次 $a$ 就 $\bmod$ 一次 $1000$,舍弃前面的数。
%03d
可以在前面补满 3 位的 $0$。
要注意结果 $s$ 的初始值要设成 $1$
否则 $0$ 乘以任何数都还是 $0$
代码
#include <iostream>
#include <cstdio>
using namespace std;
int a, b, s = 1;
int main()
{
cin >> a >> b;
for(int i = 0;i < b;++i)
s *= a, s %= 1000; //每乘一次模一次1000
printf("%03d", s); //补满3位的0
return 0;
}