题目

求正整数 N 的阶乘的最后面的非零位。

解题思路

两个整数 a 和 b 相乘后的的值的个位数的值,只与 a 和 b 个位数上的值有关。

C++代码

#include<iostream>
using namespace std;

const int M = 1e5;

int main(){
    int N;
    cin >> N;
    int ans = 1;
    for(int i=2; i<=N; ++i){
        ans *= i;
        while(ans % 10 == 0){
            ans /= 10;
        }
        if(ans > M){
            ans %= M;
        }
    }
    cout << ans%10 << endl;
    return 0;
}