#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
   int c1[130],c2[130];
   int n;
   while(scanf("%d",&n)!=EOF)
   {
       for(int i=0;i<=n;i++)
       {
           c1[i]=1;
           c2[i]=0;
       }//初始化第一个括号。 
       for(int i=2;i<=n;i++)//从第二个括号到第n个括号依次进行运算。 
       {
           for(int j=0;j<=n;j++)//第一个括号的内容 
           {
               for(int k=0;j+k<=n;k+=i)//后一个括号的内容 
               {
                   c2[j+k]+=c1[j];//运算结果放到c2中。 
               }
           }
           for(int j=0;j<=n;j++)//每次合并完两个括号之后,就赋值一次,使得合并完的内容都放到第一个括号中。 
           {
               c1[j]=c2[j];
               c2[j]=0;
           }
       }
       printf("%d\n",c1[n]);
   }
  // system("pause");
   return 0;
}

posted on 2011-07-25 15:19  枫叶飘泪  阅读(234)  评论(0编辑  收藏  举报