题意:输入n,统计有多少个n个结点的有根树,使得每个深度中所有结点的子结点数相同。结果模1000000007。
思路:递推。根据题意,每个结点的每个子树都是相同的。所以n结果为n-1的所有约数的结果加起来。
#include <iostream>
#include <stdio.h>
#include <cmath>
#include <algorithm>
#include <iomanip>
#include <cstdlib>
#include <string>
#include <memory.h>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <ctype.h>
#include<time.h>
#define INF 1000000
using namespace std;
int ans[1010];
int main(){
memset(ans,0,sizeof(ans));
ans[1]=1;
for(int i=2;i<=1000;i++){
for(int j=1;j<i;j++){
if((i-1)%j==0){
ans[i]+=ans[j];
ans[i]%=1000000007;
}
}
}
int n;
int _case=0;
while(cin>>n){
_case++;
printf("Case %d: %d\n",_case,ans[n]);
}
return 0;
}