题解 P1134 【阶乘问题】

· · 题解

这其实是一道数论题

每次乘以一个数除去后驱零,然后取最小的一位乘入,再在过程中不断维护就好了

(码风奇特,多多包涵)

#include<bits/stdc++.h>
using namespace std;
int main()
{
    unsigned long long n,c;
    unsigned long long a=1;
    cin>>n;
    for(unsigned long long b=2;b<=n;b++)
    {
        c=b;
        while(c%10==0)
        {
            c/=10;
        }
        a*=c;
        while(a%10==0)
        {
            a/=10;
        }
        a=a%1000000;
    }
    cout<<a%10<<endl;
    return 0;
}

希望大家多多支持,有什么问题或建议可以评论 Orz

个人博客有兴趣可以看一下(不过可能空空如也)