萌新求助
查看原帖
萌新求助
368791
FL_sleake楼主2024/3/23 12:38

题解区绝大多数是输出 log⁡2i+1\log_2 i+1,我是直接枚举因数,取其中最大的再加一。有没有大神可以证明我的方法的正确性:

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,ans[200010];
int getans(int x){
	if(x==1) return 1;
	int cnt=0;
	for(int i=1;i*i<=x;i++){
		if(x%i==0) cnt=max(cnt,ans[i]),cnt=max(cnt,ans[x/i]);
	}
	return cnt+1;
}
signed main(){
	cin>>n;
	for(int i=1;i<=n;i++) ans[i]=getans(i),cout<<ans[i]<<" ";
	cout<<endl;
	return 0;
}
2024/3/23 12:38
加载中...