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;
}
posted @ 2021-07-14 08:50  5k_sync_closer  阅读(12)  评论(0编辑  收藏  举报  来源