100!末尾有多少个0C语言
答案:3 悬赏:70 手机版
解决时间 2021-02-21 11:59
- 提问者网友:缘字诀
- 2021-02-20 13:27
100!末尾有多少个0C语言
最佳答案
- 五星知识达人网友:玩世
- 2021-02-20 14:47
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
结果中末尾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
全部回答
- 1楼网友:千杯敬自由
- 2021-02-20 16:52
以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
- 2楼网友:蕴藏春秋
- 2021-02-20 15:45
#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); }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯