求助
查看原帖
求助
661913
liwenxi1145144444楼主2024/7/18 09:01
#include<bits/stdc++.h>
using namespace std;
long long n,p[205],cnt,ans[205];
bool vis[205];
int main(){
	for(int i=2;i<=200;i++){
		if(!vis[i]){
			p[++cnt]=i;
		}
		for(int j=1;j<=cnt&&i*p[j]<=200;j++){
			vis[i*p[j]]=1;
			if(i%p[j]==0){
				break;
			}
		}
	}
	ans[2]=1;
	ans[3]=1;
	for(int j=1;j<=cnt;j++){
		for(int i=p[j]+2;i<=200;i++){
			ans[i]+=ans[i-p[j]];
		}
	}
	while(scanf("%lld",&n)!=EOF){
		cout<<ans[n]<<"\n";
	}
	return 0;
}

为什么这样样例都没过

#include<bits/stdc++.h>
using namespace std;
long long n,p[205],cnt,ans[205];
bool vis[205];
int main(){
	for(int i=2;i<=200;i++){
		if(!vis[i]){
			p[++cnt]=i;
		}
		for(int j=1;j<=cnt&&i*p[j]<=200;j++){
			vis[i*p[j]]=1;
			if(i%p[j]==0){
				break;
			}
		}
	}
	ans[0]=1;
	for(int j=1;j<=cnt;j++){
		for(int i=p[j];i<=200;i++){
			ans[i]+=ans[i-p[j]];
		}
	}
	while(scanf("%lld",&n)!=EOF){
		cout<<ans[n]<<"\n";
	}
	return 0;
}

但这样就AC了呢?

2024/7/18 09:01
加载中...