看完这道题,我就想有没有能优一点(不要挨个遍历)的做法,就想到了分组(显然5的倍数每5个出现一次),一个组中各数的贡献都是一样的(阶乘中因子为5的倍数的数的个数),就有了下面这个错误代码
请大佬验货!!
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int n,i;
ll sum,op=1,soso=25;
int main(){
cin>>n;
for(i=9;i<=n;i+=5){
sum=sum+5*op;
op++;
if(i==soso-1)
{
op++;soso*=5;
}
}
for(int j=i-4;j<=n;j++){
sum=sum+op;
}
cout<<sum;
return 0;
}