- 素数之和(prim)
- 2024-04-20 17:11:58 @
//我tm都优化成这样还超时
//别告诉我这题的正解是dp
#include<bits/stdc++.h>
using namespace std;
int n,a[1500000]={2};//这个范围是根据1~10^7的素数个数搞出来的,大概是n/log(n),用计算器算的,是1428571点几
//但这范围要是再大一点就会compile error,我也不知道为啥
bool pr[10000005],f;
void dfs(int dep,int lef)
{
if(lef==0&&dep==5)
{
f=1;
for(int i=1;i<=dep-1;i++)cout<<a[i]<<' ';
cout<<endl;
exit(0);
}
if(dep==5)return;//没有这个你就废了!!!
for(int i=a[dep-1];i<=lef;i++)
{
if(pr[i])
{
a[dep]=i;
dfs(dep+1,lef-i);
}
}
}
int main()
{
cin>>n;
for(int i=2;i<=n;i++)pr[i]=1;
for(int i=2;i*i<=n;i++)
if(pr[i])
for(int j=i*i;j<=n;j+=i)
pr[j]=0;
dfs(1,n);
if(!f)cout<<"Impossible"<<endl;
return 0;
}
1 条评论
-
2230134娄耀 (2212238) LV 8 @ 2024-04-21 10:17:18
别打深搜了,学学dp吧,6级要考
- 1
信息
- ID
- 1603
- 难度
- 10
- 分类
- (无)
- 标签
- 递交数
- 22
- 已通过
- 0
- 通过率
- 0%
- 被复制
- 4
- 上传者