听取wa声一片
查看原帖
听取wa声一片
991651
wangmingrui123456楼主2025/1/13 21:54
#include<bits/stdc++.h>
using namespace std;
int a,f[250],prime[50]={0,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199};
bool is_prime(int x){
	if(x<2)return 0;
	for(int i=2;i*i<=x;++i){
		if(x%i)continue;
		return 0;
	}
	return 1;
}
int dfs(int x){
	if(f[x])return f[x];
	if(x==0)return 1;
	if(x==2)return 1;
	if(x==3)return 1;
	if(is_prime(x)){
		f[x]=1;
	}
	for(int i=1;i<=x/2;++i){
		int p=x-i;
		f[x]+=dfs(p)*dfs(i);
	}
	return f[x];
}
int main(){
	while(cin>>a){
		memset(f,0,sizeof(f));
		f[0]=1;
		printf("%d\n",dfs(a));
	}
	return 0;
}

2025/1/13 21:54
加载中...