加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

2018年第九届蓝桥杯 C++省赛B组 第三题:乘积尾零

发布时间:2020-12-15 04:52:54 所属栏目:百科 来源:网络整理
导读:题目: 第三题 标题:乘积尾零 如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾有多少个零? 5650 4542 3554 473 946 4114 3871 9073 90 4329 ? 2758 7949 6113 5659 5245 7432 3051 4434 6704 3594 ? 9937 1173 6866 3397 4759 7557 3070 2287 1

题目:

第三题

标题:乘积尾零

如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾有多少个零?

5650 4542 3554 473 946 4114 3871 9073 90 4329 ?


2758 7949 6113 5659 5245 7432 3051 4434 6704 3594 ?


9937 1173 6866 3397 4759 7557 3070 2287 1453 9899 ?


1486 5722 3135 1170 4014 5510 5120 729 2880 9019 ?


2049 698 4582 4346 4427 646 9742 7340 1230 7683 ?


5693 7015 6887 7381 4172 4341 2909 2027 7355 5649 ?


6701 6645 1671 5978 2704 9926 295 3125 3878 6785 ?


2066 4247 4800 1578 6652 4616 1113 6205 3264 2915 ?


3966 5291 2904 1285 2193 1428 2265 8730 9436 7074 ?


689 5510 8243 6114 337 4096 8199 7313 3685 211?

注意:需要提交的是一个整数,表示末尾零的个数。不要填写任何多余内容。


解题思路:

方法一:一个数一个数的相乘,统计尾数为0的个数,这样计算数据量很大,会溢出

方法二:成绩为0的值一定是由2和5乘出来的,所以直接统计2和5的个数即可。最后取两个数中个数较小的作为答案。因为2与5必须成对的存在,对数最多为多少由数量较小的那个决定。

法二代码:

#include

#include

#include

#include

#include

using namespace std;

int main()

{

int m,n;

int a[11][11];

int sum2=0;

int sum5=0;

scanf("%d%d",&m,&n);

for(int i=0;i

for(int j=0;j

{

scanf("%d",&a[i][j]);

while(a[i][j])

{

if(a[i][j]%2==0)

{

sum2++;

a[i][j]/=2;

}

else if(a[i][j]%5==0)

{

sum5++;

a[i][j]/=5;

}

else

break;

}

}

int sum=min(sum2,sum5);

cout<

return 0;

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读