SPOJ 11. Factorial

本文探讨了如何使用C语言和Python语言计算一个数n!的尾数中0的个数,并对比了两者在相同时间限制下的性能表现。通过质因数分解的方法,我们发现只需关注5的个数即可,从而简化了计算过程。此外,文章还揭示了为何Python在某些情况下可能会超时,提供了深入理解不同编程语言在特定任务上的性能差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目要求计算n!的尾数中0的个数。对一个数n进行质因数分解,只有2和5相乘才能使结果中出现0,所以可以看分解的结果中2和5的个数即可,而2的个数明显会多于5,所以只要计算出5的个数即可。具体算法为用n不断除以5,直到商为0为止,然后再把之前的商都加起来。如算100!,则100/5=20, 20/5=4, 4/5=0,那么最终结果就为20+4+0=24.

#include <stdio.h>

int main()
{
	int T,N,sum;
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d",&N);
		for(sum=0;N;N/=5,sum+=N);
		printf("%d\n",sum);
	}
	return 0;
}

T=input()
while T:
    N=input()
    sum=0
    while N:
        N/=5
        sum+=N
    print sum
    T-=1
代码是一样的,但是python会超时,觉得很神奇,时间限制是6s的,C用了0.27s,不知道python怎么就TLE了。先不管了~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值