A+B Problem(再升级)
题目背景
题目名称是吸引你点进来的。
实际上该题还是很水的。
题目描述
- 1+1=?1+1=?1+1=? 显然是 222。
- a+b=?a+b=?a+b=? P1001 回看不谢。
- 哥德巴赫猜想 似乎已呈泛滥趋势。
以上纯属个人吐槽
给定一个正整数 nnn,求将其分解成若干个素数之和的方案总数。
输入格式
一行一个正整数 nnn。
输出格式
一行一个整数表示方案总数。
样例 #1
样例输入 #1
7
样例输出 #1
3
样例 #2
样例输入 #2
20
样例输出 #2
26
提示
样例解释
存在如下三种方案:
- 7=77=77=7。
- 7=2+57=2+57=2+5。
- 7=2+2+37=2+2+37=2+2+3。
数据范围及约定
- 对于 30%30\%30% 的数据 1≤n≤101\le n\le 101≤n≤10。
- 对于 100%100\%100% 的数据,1≤n≤1031\le n\le 10^31≤n≤103。
C++实现
#include
#include
using namespace std;
int f[1010];
int n,ans=0;
bool zhu(int i){
if(i2)return true;
for(int j=2;j<=sqrt(i);j++){
if(i%j0)return false;
}
return true;
}
void dfs(int i,long long sum){
if(sum>n)return;
if(sum==n){
ans++;return;}
else for(int j=i;j<=n-sum;j++){
if(f[j])dfs(j,sum+j);
}
}
int main(){
cin>>n;
for(int i=2;i<=n;i++){
if(zhu(i))f[i]=true;
}
dfs(1,0);
cout<<ans<<endl;
}

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容
4万+

被折叠的 条评论
为什么被折叠?



