求正解
查看原帖
求正解
658786
STUDENT00楼主2022/10/26 20:54

萌新不懂了,这时间复杂度应该只能到 O(n)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

2022/10/26 20:54
加载中...