P1134 阶乘问题

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

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

暴力出奇迹。。。

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

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

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

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

PS:数据真的水。。。

代码:

#include<cstdio>

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值