zhangwch • 1个月前
要数0有多少,第一反应自然是看有多少数字是10的倍数。
可是,2的倍数和5的倍数相乘也能获得10的倍数,于是问题变成了找出2的倍数、5的倍数、10的倍数。
再仔细一想,关键不是2、5、10,关键在于5:
5作为因子在[1,n]中出现了多少次,就会有多少个0(因为2足够多,反正比5多)。
问题就转变成了,[1,n]中的每个数,能提供多少个5.
#include<iostream>
using namespace std;
int main(){
long long n;
cin >> n;
int ans = 0;
for (long long i = 5; i <= n; i *= 5) {
ans += n / i;
}
cout << ans;
return 0;
}
评论: