题目的意思简单,给你n个点,每个点(除根节点)都有且只有一个父节点。现在问你这些节点关系组成的图有多少种情况满足同一层节点上每个点的后继节点数量相等。
很简单,对于n节点,直接枚举n-1的的所有约数情况,可以用记忆化搜索,直接递推也可以。Easy problems .
1 #include <iostream> 2 #include <cstdio> 3 #define maxn 1010 4 #define M 1000000007 5 using namespace std; 6 typedef long long ll; 7 8 ll f[maxn]; 9 int n,k=0; 10 11 int main() 12 { 13 f[1]=1; 14 for (int i=2; i<maxn; i++) 15 { 16 n=i-1; 17 for (int j=1; j<=n; j++) 18 if (n%j==0) f[i]=(f[i]+f[j])%M; 19 } 20 while (scanf("%d",&n)!=EOF) 21 { 22 cout<<"Case "<<++k<<": "<<f[n]<<endl; 23 } 24 return 0; 25 }