P1134 阶乘问题

数论题用暴力做系列。。。

这道题看起来好像很头疼的样子。\(n\)的范围那么大怎么做???

暴力出奇迹。。。

我们用个变量ans记录。套上\(n\)次循环,一次乘上\(i\),然后把尾数的0都删掉。

但是可能一直都没有0,ans会慢慢爆精度。难道我们要写高精度?

其实不需要。我们只需要最后膜一个数就可以了。

具体多大呢?自己去试试。这就是玄学的问题了。

PS:数据真的水。。。

代码:

#include

const int maxn = 50000005;

#define ll long long
ll n;

int main()
{
    scanf("%lld", &n);
    ll ans = 1;
    for(int i = 1; i <= n; i++)
    {
        ans = ans * i;
        while(ans % 10 == 0) ans /= 10;
        ans = ans % 1000000;
    }
    printf("%lld\n", ans % 10);
    return 0;
}

转载于:https://www.cnblogs.com/Garen-Wang/p/9696800.html

你可能感兴趣的:(P1134 阶乘问题)