hdu 2189 悼念512汶川大地震遇难同胞——来生一起走 基础母函数

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstring>
 4 using namespace std;
 5 
 6 int prime[40];
 7 int c1[151];
 8 int c2[151];
 9 int num[151];
10 int l;
11 void init()
12 {
13     int i,j;
14     num[0]=1;
15     num[1]=1;
16     for(i=2; i<=150; i++)
17         for(j=i*i; j<=150; j+=i)   
18             num[j]=1;
19     for(i=2; i<=150; i++)
20         if(!num[i])
21             prime[l++]=i;   //素数表。。
22 }
23 int main()
24 {
25     init();
26     int n,t,i,j,k;
27     memset(c2,0,sizeof(c2));
28     for(i=0; i<=150; i+=2)  //第一个素数是2,所以这里的增量是2.
29         c1[i]=1;
30     for(i=1; i<=34; i++)
31      {
32          for(j=0; j<=150; j++)
33         {
34             for(k=0; k+j<=150; k+=prime[i])  //每次的添加都是第i个素数的值。
35                 c2[k+j]+=c1[j];
36         }
37             for(j=0; j<151; j++)
38             {
39                 c1[j]=c2[j];
40                 c2[j]=0;
41                  //printf("%d
",c1[j]);
42             }
43      }
44     cin>>t;
45     while(t--)
46     {
47         cin>>n;
48         cout<<c1[n]<<endl;
49     }
50     return 0;
51 }
原文地址:https://www.cnblogs.com/ouyang_wsgwz/p/7931276.html