RE 0 求条

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a[10000005],pr[10000005],c,ans;
bool vis[10000005]; 
map<int,int>mp;
int dp[10000005];
void init(){
	for(int i=2;i<=10000000;i++){
		if(vis[i]==0) pr[++c]=i;
		for(int j=1;j<=c&&i*pr[j]<=10000000;j++){
			vis[i*pr[j]]=1;
			if(i%pr[j]==0) break;
		}
	}
}
signed main(){
    freopen("item.in","r",stdin);
    freopen("item.out","w",stdout);
	init();
	cin>>n;
	for(int i=1;i<=n;i++){
		int x;
		cin>>x;
		mp[x]++;
	}
	for(int i=1;i<=10000000;i++){
		dp[i]+=mp[i];
		for(int j=1;j<=c&&i*pr[j]<=10000000;j++){
			dp[i*pr[j]]=max(dp[i*pr[j]],dp[i]);
		}
		ans=max(dp[i],ans);
	}
	cout<<ans;
	return 0;
}

已过,此帖结