版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}