hdu 2189 母函数简单题

来源:互联网 发布:如何注销淘宝帐户 编辑:程序博客网 时间:2024/06/05 16:59
#include<iostream>#include<cstdio>#include<string>#include<algorithm>#include<cstring>#include<vector>#include<queue>#include<map>#include<set>using namespace std;int a[155],b[155],prim[50],k;void init(){    k=1;    for(int i=2; i<=150; i++)    {        int flag=1;        for(int j=2; j*j<=i; j++)            if(i%j==0)            {                flag=0;                break;            }        if(flag)            prim[k++]=i;    }}int main(){    int t,n;    init();    memset(a,0,sizeof(a));    memset(b,0,sizeof(b));    for(int i=0; i<=150; i+=2)    {        a[i]=1;        b[i]=0;    }    for(int i=2; i<k; i++)    {        for(int j=0; j<=150; j++)            for(int k=0; k+j<=150; k+=prim[i])            {                b[k+j]+=a[j];            }        for(int j=0; j<=150;j++)        a[j]=b[j],b[j]=0;//注意把b清零    }    cin>>t;    while(t--)    {        scanf("%d",&n);        printf("%d\n",a[n]);    }}

原创粉丝点击