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

· · 题解

楼下方法的改进,只要计算后几位就OK了,和0和前面太多位无关,但还是要留有余量,因为一但进位变0就要看前面的了,

实现代码如下

#include<cstdio>
#include<cstring>
using namespace std;
int n;
int a=1;
void search()
{
    int i,j;
    for(i=2;i<=n;i++)
    {
        a*=i;
        while(a%10==0) 
        {
            a/=10;
        }
        if(a>100000) a%=100000;//余量就在这
    }
}
int main()
{
    scanf("%d",&n);
    search();
    while(a%10==0) a/=10;
    printf("%d",a%10);
    return 0;
}