//#include <fstream>
#include <iostream>
using namespace std;
int main()
{
//fstream cin("Ignatius and the Princess III.txt");
unsigned num;
while(cin>>num)
{
if(num==0)
break;
unsigned* coins=new unsigned[num+2];
for (unsigned i=0;i<num+2;i++)
coins[i]=1;
unsigned* assist=new unsigned[num+2];
memset(assist,0,sizeof(unsigned)*(2+num));
for(unsigned i=2;i<=num;i++)
{
for(unsigned j=0;j<=num;j++)
for(unsigned k=0;k+j<=num;k+=i)
assist[k+j]+=coins[j];
for(unsigned j=0;j<=num;j++)
{
coins[j]=assist[j];
assist[j]=0;
}
}
cout<<coins[num]<<endl;
}
return 0;
}
总结与教训:
整数拆分,母函数的那首绝活~