P1832 A+B Problem(再升级)

题目背景

·题目名称是吸引你点进来的

·实际上该题还是很水的

题目描述

·1+1=? 显然是2

·a+b=? 1001回看不谢

·哥德巴赫猜想 似乎已呈泛滥趋势

·以上纯属个人吐槽

·给定一个正整数n,求将其分解成若干个素数之和的方案总数。

输入格式

一行:一个正整数n

输出格式

一行:一个整数表示方案总数

#include<bits/stdc++.h>
using namespace std;
const int maxn=1010;
typedef long long ll;
int tot=0;
int c[maxn];
int is (int x) {
    if (x<=1) return 0;
    for (int i=2;i*i<=x;i++) if (x%i==0) return 0;
    return 1;
}
ll dp[maxn];
int n;
int main () {
    scanf("%d",&n);
    for (int i=1;i<=n;i++) {
        if (is(i)) {
            c[++tot]=i;
        }
    }
    dp[0]=1;
    for (int i=1;i<=tot;i++) 
        for (int j=c[i];j<=n;j++)
            dp[j]+=dp[j-c[i]];
    printf("%lld\n",dp[n]);
}

 

posted @ 2020-08-07 16:45  zlc0405  阅读(138)  评论(0编辑  收藏  举报