hdu 2189

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Masqueradey/article/details/52535397
母函数,只要把150以内的素数分别编队即可套用母函数, 以2为例,可以有1个——75个该种队伍,把每种队伍放到一个多项式里即可。
#include<iostream>
#include<cstring>
using namespace std;
int c1[200],c2[200],prime[200];
int flag[200];
int cnt;
void init(){
    int i,j;
    cnt=0;
    memset(flag,1,sizeof(flag));
    flag[1]=0;
    for(i=2;i<=150;i++)
    {
     if(!flag[i])continue;
     prime[++cnt]=i;
     for(j=i*2;j<=150;j+=i)flag[j]=0;
    }
    return;
}
int main(){
    int i,j,k,kk,T,n;
    init();
    c1[0]=1;
    for(i=1;i<=cnt;i++)
    {
     for(j=0;j<=150;j++)
     for(k=0;k+j<=150;k+=prime[i])
     c2[k+j]+=c1[j];
     for(kk=0;kk<=150;kk++){c1[kk]=c2[kk];c2[kk]=0;}
    }
    cin>>T;
    while(T--)
    {
     cin>>n;
     cout<<c1[n]<<endl;
    }
    return 0;
}


猜你喜欢

转载自blog.csdn.net/Masqueradey/article/details/52535397