zoj2022

这道题很是。。。。。。。。。。媛姐都对我无语了,copy了媛姐的代码先放着吧

下面是纠结的一段对话。。。。。。。。。

晃晃  17:00:22
CSDN的:要看1到n连续相乘尾数有多少个0,就看这n个数中,有多少个是5的倍数。因为1-n个数中肯定可以提供足够的偶数,所以,只要有5的倍数就一定能够把它乘成10的倍数,就是说n以下有多少个数是5的倍数,那么它的阶乘就有多少个0。
Moonlight♡  16:59:59

晃晃  17:00:57
不理解。。。。。。
Moonlight♡  17:00:32
因为 10*任何一个数 末尾至少产生一个0吧?
晃晃  17:01:23
n以下有多少个数是5的倍数,那么它的阶乘就有多少个0。

Moonlight♡  17:00:39
不对
晃晃  17:01:31

Moonlight♡  17:00:46
比如25
晃晃  17:01:38
??
Moonlight♡  17:00:53
25 = 5*5
他提供了两个5
如果有两个2的话
晃晃  17:02:09
==
Moonlight♡  17:01:21
那么它成开的话 就是2个0
晃晃  17:02:14
我想想
Moonlight♡  17:01:24

晃晃  17:03:09
这个可以理解
但是
为什么其他的就不产生零了??
Moonlight♡  17:03:16
10 的话 可以分解为2*5。。
其实你只要判断 1* 2*3*4*...n  可以分解5^x* Y 求那个x就行了
晃晃  17:10:11
先了解这种算法吧,以后再想为什么。。
我copy了一下你的代码
Moonlight♡  17:09:51

你想想5进制。。。
晃晃  17:12:49
呃。。。有什么联系吗???
Moonlight♡  17:15:33
好吧 你先放着吧。。
晃晃  17:16:52
。。。呃。
#include <stdio.h>   
int main()  
{  
    int ncases,n,sum;  
    scanf("%d",&ncases);  
    while(ncases--)  
    {  
        sum = 0;  
        scanf("%d",&n);  
        while( n/5 )  
        {  
            sum += n/5;  
            n /= 5;  
        }  
        printf("%d\n",sum);  
    }   
return 0;  
}  


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值