永发信息网

100!末尾有多少个0C语言

答案:3  悬赏:70  手机版
解决时间 2021-02-21 11:59
100!末尾有多少个0C语言
最佳答案
100!=1*2*3*...*100
结果中末尾0由以下三种情况生成:
(1)乘以100,得到2个0。
(2)乘以10、20、30、40、60、70、80或90得到1个0,共8个0。
(3)一个偶数乘以5得到1个0,共有5、15、35、45、55、65、85、95,共8个0。
(4)偶数乘以50会得到2个0。
(5)4乘以25或75各会得到2个0,共4个0。
故100!末尾共有24个0。

算法描述:
从4!=24开始计算,如果阶乘值末尾为0,就把末尾0去掉,计数器加1;如果末尾不为0,只保留个位数即可。最后再进行一次末尾0的扫描操作。

C语言程序:
#include <stdio.h>

void main()
{
int i;
long f = 24;
int c = 0;

for(i=5; i<=100; i++)
{
f *= i;

if(f%10==0)
{
f /= 10;
c++;
}
else
{
f = f % 10;
}
}

while(f%10 == 0)
{
f = f / 10;
c++;
}

printf("末尾0的总数量:%d", c);
}

运行结果:
末尾0的总数量:24
全部回答
以C语言的数据类型来求100的阶乘不造成数据过大溢出是不现实的,所以不能在求得100的阶乘之后再数它末尾有多少个0,只能在累乘的过程中遇到一个0就干掉,最后数总共干掉了多少个,至于由于溢出前面丢掉了多少位的数就管不了了,代码如下:main() { long a=1; int i,n=0; for(i=2;i<=100;i++) { a*=i; if(a>10000)a=a%10000; loop1: if(a>10&&a%10==0){a/=10;n++;goto loop1;} } printf("%d\n",n); }结果是24

#include<stdio.h>

main() {  int i, j, sum;  sum = 0;   //初始化计数器  i = 1;    //循环初始值  while(i <= 100)  {   j = j*i;   if(j%10 == 0)    //检测位数是否为0   {    sum++;    //计数器自加    j = j/10;    //去除尾数0   }   i++;  }  printf("%d\n",sum); }

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
请问可以帮忙做一个用易语言做一个换IP的小软
猴王饼家地址在什么地方,想过去办事
私人订制有没有第二部?
乡村柴火菜饭店地址有知道的么?有点事想过去
求翻译下面这段英文. 5分悬赏
石家庄到衡水汽车的时刻表
广东煲仔饭地址有知道的么?有点事想过去
他先打我,我把他用拳把他肋骨打断了一根,会
支付宝无缘无故 被人转账2000.00,请问这个怎
二六同宫风水上是什么
华夏常青树每年交多少钱?有哪些保障
(2005)图示电路中,输出电压U与输入电压U、U
施肥过多白掌叶和新芽都焉了怎办
市政五公司彩色方砖厂地址有知道的么?有点事
你好,iTunes新版怎样设置铃声的?就m4a那里
推荐资讯
山东省滕州市维纳斯学校在哪儿 ?
【如何学好英语】如何学好英语的英语作文
诈骗链接点击了未曾打开会被盗刷银行卡吗
【三溴化硼】溴化硼与水的反应反应原理
QQ里怎么一次性加一个群的人
如何在excel中只显示10个字后面的字符
梦到自己变成龙
高温润滑脂的应用范围有哪些
顺鑫宾馆地址在什么地方,想过去办事
北京市二级建造师网上怎么报名?
金铂雅商务酒店怎么去啊,有知道地址的么
当人处在低谷时听什么歌最好
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?