题目链接 hdu uva
n结点树,除去根结点,有n-1个结点,根结点的每棵子树需要完全相同,所以根结点的子树个数k,满足(n-1)%k==0。然后就可以递推打表了。
#include<cstdio>
const int N=1010;
const int mod=1e9+7;
int d[N];
void Init()
{
d[0]=0;d[1]=1;
for(int i=2;i<=1000;i++)
for(int j=1;j<=i-1;j++)
{
if((i-1)%j)continue;
d[i]=(d[i]+d[j])%mod;
}
}
int main()
{
#ifdef local
freopen("in.txt","r",stdin);
#endif
int n,ca=0;
Init();
while(~scanf("%d",&n))
printf("Case %d: %d\n",++ca,d[n]);
return 0;
}