码迷,mamicode.com
首页 > 其他好文 > 详细

5 POJ 3132 Sum of Different Primes

时间:2015-04-26 22:55:13      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:

dp[j][k]表示用j个质数表示k这个值得方法数。

一个质数只能用一次,类似01背包。



#include<cstdio>
#include<cstring>
const int maxn=1130;
int pri[maxn+10],dp[20][maxn+10];
void init()
{
    int i,j;
    for(i=0;i<=maxn;i++) pri[i]=1;
    pri[0]=pri[1]=0;
    for(i=2;i<=maxn;i++)
    {
        if(!pri[i]) continue;
        for(j=i+i;j<=maxn;j+=i)
            pri[j]=0;
    }
}
int main()
{
    init();
    int i,j,k,m,n;
    while(scanf("%d%d",&n,&m)&&(n||m))
    {
        memset(dp,0,sizeof dp);
        dp[0][0]=1;
        for(i=2;i<=n;i++)
        {
            if(!pri[i]) continue;
            for(k=n;k>=i;k--)
                for(j=m;j>0;j--)
                    dp[j][k]+=dp[j-1][k-i];
        }
        printf("%d\n",dp[m][n]);
    }
    return 0;
}


5 POJ 3132 Sum of Different Primes

标签:

原文地址:http://blog.csdn.net/u011032846/article/details/45292879

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!