1 条题解
-
0
直接爆搜即可。
#include <bits/stdc++.h> using namespace std; const int p[64]={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,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293}; int o[22],n,m; void output() { for(int i=n;i>=1;i--) cout<<o[i]<<' '; cout<<endl; } int dfs1(int h,int l,int s) { if(s<0) return 0; if(l==0) { if(s==0) return 1; return 0; } int ans=0; for(int i=h+1;i<=60;i++) ans+=dfs1(i,l-1,s-p[i]); return ans; } void dfs2(int h,int l,int s) { if(s<0) return; if(l==0) { if(s==0) output(); return; } for(int i=h+1;i<=60;i++) { o[l]=p[i]; dfs2(i,l-1,s-p[i]); } } int main() { cin>>n>>m; int f=dfs1(-1,n,m); if(!f) { puts("No Answer."); return 0; } cout<<f<<endl; dfs2(-1,n,m); return 0; }
- 1
信息
- ID
- 59
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- 递交数
- 3
- 已通过
- 2
- 上传者