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;
}