C - 末三位
一:直接快速幂
#include<iostream> using namespace std; const int MOD = 10000; int q_power(int a,int b){ int res = 1; a %= MOD; while(b){ if(b & 1) res = res * a % MOD; b >>= 1; a = a * a % MOD; } return res; } int main(){ int n ; while(cin >> n){ int ans = q_power(5, n); ans %= 1000; if(ans / 100 == 0) putchar('0'); if(ans / 10 == 0) putchar('0'); printf("%d\n",ans); } return 0; }
二:循环节
由上式中的 125 * 25 --> 125 我们可以得到 当 n 为 大于 1 的奇数时
同理 偶数为 625
最后再处理一个 0 的时候就可以了
#include<iostream> using namespace std; int main(){ int n ; while(cin >> n){ if(n == 0) puts("001"); else if(n == 1) puts("005"); else if(n == 2) puts("025"); else if(n & 1) puts("125"); else puts("625"); } return 0; }