萌新不懂了,这时间复杂度应该只能到 O(n) 了吧,听说可以用除法分块,可是你要不停试除2和5,肯定不行啊!
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,ans;
signed main(){
scanf("%lld",&n);
for(register int i=1;i<=n;i++){
int t=i,a=0,b=0;
while(t%2==0){
a++;
t/=2;
}
while(t%5==0){
b++;
t/=5;
}
ans+=n/t;
}
printf("%lld",ans);
return 0;
}
80分 QwQ