「已注销」 2020-11-20 12:04 采纳率: 100%
浏览 76
已采纳

这个题目怎么解,我一直卡在0的判断了

 

统计末尾0的个数 给定两个正整数A和B(A<B),请统计从A到B的所有整数的乘积的末尾有多少个0。例如:给定的两个数是10和

#include <stdio.h>
int main() {
	int i,j,m=0,a,b;
	while((scanf("%d%d",&a,&b))==2) {
		m=0;
		for (i=a; i<=b; i++) {
			j=i;
			if(j<125) {
				while (j%5==0&&j>0) {
					j=j/5;
					m++;
				}
			} else if(j>=125&&j<625) {
				while (j%25==0&&j>0) {
					j=j/25;
					m++;
				}
			} else if(j>=625&&j<=3125) {
				while (j%125==0&&j>0) {
					j=j/125;
					m++;
				}
			}

		}
		printf("%dn",m);
	}
}

20,那么需要计算的算式是: 10×11×12×13×14×15×16×17×18×19×20 该算式的结果是6704425728000,末尾有3个0。 这个算式的结果太大了,也许你能找到简便算法,不需要计算出整个算式的结果就能知道它末尾的0的个数! ###输入格式

若干组空格分隔的2个整数A和B(A<B且都不超过100000),每组数据一行。

###输出格式 每组输入数据对应输出一个整数,单独占一行,为从A乘到B的结果的末尾的0的个数。 ###输入样例

1 10
125 128
1 100
21 24

###输出样例

2
3
24
0
  • 写回答

2条回答 默认 最新

  • Double·Q 2020-11-20 14:30
    关注

    只需要统计个位即可,判断个位为0的,计数+1,然后把其他个位非零的个位全部乘起来,加上之前的个位为0的个数,就是最终结果的0的个数

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 数字信号处理实验报告
  • ¥15 ensp路由器启动不了一直报#
  • ¥50 安卓10如何在没有root权限的情况下设置开机自动启动指定app?
  • ¥15 ats2837 spi2从机的代码
  • ¥200 wsl2 vllm qwen1.5部署问题
  • ¥100 有偿求数字经济对经贸的影响机制的一个数学模型,弄不出来已经快要碎掉了
  • ¥15 数学建模数学建模需要
  • ¥15 已知许多点位,想通过高斯分布来随机选择固定数量的点位怎么改
  • ¥20 nao机器人语音识别问题
  • ¥15 怎么生成确定数目的泊松点过程