题意:
求一个质数可以分解成几个质数的和的方案数。
思路:
这题可以用完全背包,动态转移方程是 f[j]=f[j]+f[j-prime[i]]。
代码:
#include<cstdio>
using namespace std;
int n1,n,f[201];
int prime[47]={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};//质数表
int main()
{
scanf("%d",&n);
f[0]=1;//初值
for (int i=1;i<47;i++)
for (int j=prime[i];j<=200;j++)
f[j]=f[j]+f[j-prime[i]];
printf("%d",f[n]);
}