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]); }}