1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include
15 using namespace std;
16 const int N=130;
17 int a[N];
18 int b[N];
19 int c[N];
20 void Poly()
21 {
22 memset(c,0,sizeof(c));
23 for(int i=0;i<N;i++)
24 for(int j=0;j<N-i;j++)
25 {
26 c[i+j]+=a[i]*b[j];
27 }
28 }
29 void Init()
30 {
31 memset(a,0,sizeof(a));
32 memset(c,0,sizeof(c));
33 for(int i=0;i<N;i++)
34 a[i]=1;
35 for(int k=2;k<N;k++)
36 {
37 memset(b,0,sizeof(b));
38 for(int i=0;i<N;i=i+k)
39 {
40 b[i]=1;
41 }
42 Poly();
43 memcpy(a,c,sizeof(c));
44 }
45 }
46 int main()
47 {
48 int n;
49 Init();
50 while(scanf("%d",&n)!=EOF)
51 {
52 printf("%d\n",a[n]);
53 }
54 }
hdu1028 参考答案 (2008-10-10 22:18:29由218编辑)