题解 P2726 【【题目待添加】】

· · 题解

最简单题解

根据小学数学,个位数与其他数相乘后的乘积的个位数不受十位数影响

所以理论上只记录个位数就行了,但遇到10要mod10

但是,只记录个位数会有误差,所以我选择记录后3位

所以不用用高精,用int就可以

(实验过unsigned short和short都不行,前者wa+四个点AC后者wa+tle+3个点AC)

#include<iostream>
using namespace std;
int main()
{
    int n,ans=1;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        ans*=i;//阶乘
        while(ans%10==0) ans/=10;//去0
        ans%=1000;//只记录后三位
    }
    cout<<ans%10;//最后一位
    return 0;
}