藍橋杯真題2018B 乘積尾零

2021-10-24 19:17:36 字數 1230 閱讀 3666

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的產生,只能是由2x5得到,這題只要發現這個規律即可,後面只需要統計每乙個數的因子2和因子5的個數即可。

相比第一種,更容易想到的是每次相乘之後,能不能把末尾的0給先扣出來,放到count計數裡面,然後再繼續相乘,這樣做的理由是:末尾為0的數字乘以任意乙個數某位0的數量是大於等於原來0的數量的,從數學角度來說,這樣是可行的。但是機器會報long long錯,因此採取的一種方法就是把每次相乘的結果扣去0之後,只保留末尾的若干位,這樣保證在乘上下乙個數字時既不會報溢位的錯,也不會導致少0出現。所以這種方法要注意保留位數的選取,觀察資料發現可以取每次扣完0之後保留4位數。

#include

#include

using

namespace std;

intmain

(void);

int count_factor2=

0,count_factor5=0;

for(

int i=

0;i<

100;i++

)while

(num%5==

0)} cout<<

min(count_factor2,count_factor5)

}

藍橋杯2018初賽 乘積尾零

乘積尾零 題目描述 如下的10行資料,每行有10個整數,請你求出它們的乘積的末尾有多少個零?5650 4542 3554 473 946 4114 3871 9073 90 4329 2758 7949 6113 5659 5245 7432 3051 4434 6704 3594 9937 117...

藍橋杯 乘積尾零

c 版本 對於每個數計算出可以最多分解成多少個2乘積,以及多少個5乘積,然後累計起來,最後輸出2的個數和5的個數中的較小值,因為只有2 5會出現0.int c1 0,c2 0 for int i 1 i 10 i for int j 1 j 10 j while t 5 0 cout當然是暴力計算 ...

2023年藍橋杯預賽第三題乘積尾零

如下的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 339...