对于乘法我们知道1*1=1,2*5=10,3*7=21......
其中出现‘0’的只有 1*10 2*5 4*5 6*5 8*5 10*5等。
这有什么规律呢?
我们可以从它们的因数探究。
通过 模拟 我们可以看每两个乘数里都有 2 和 5 的倍数或本身。
根据日常常识可知只有2和5是质数(没有更小的数),而且积是10;
所以就可以统计两个乘数中因数中有几个2 or 5;再求最小值即可
以下为伪代码
cin->n;
for (i->n,1->n)
if->i模2不等于1 {
int k = i
while->k模2不等于1 k/2,r++
}
if->i模5不等于1234 {
int k = i
while->k模5不等于1234 k/5,w++
}
printf->min(w, r)
w = r = 0
for (i->3,n->3,-2) {
if->i模2不等于1{
int k = i
while->k模2不等于1 k/2,r++
}
if->i模5不等于1234 {
int k = i
while->k模5不等于1234 k/5,w++
}
}
printf->min(w, r)