uva 1645 Count dp

来源:互联网 发布:数据库删除一条数据 编辑:程序博客网 时间:2024/05/29 08:21

题意:求n个节点的有根数,有多少种情况满足每个深度中所有节点的子节点个数相同。

也就是说,每个节点的所有子树都是相同的,dp[i] = sum(dp[k] * j + 1),k * j + 1 = i。最终的结果还要求鱼

#include <iostream>#include <cstdio>#include <cstring>using namespace std;int dp[1005];int m = 1000000007;int main() {    int i, j, n;    dp[1] = 1;    for(i = 1; i < 1000; i++) {        for(j = 1; j * i < 1000; j++) {            dp[j * i + 1] = (dp[i] + dp[j * i + 1]) % m;        }    }    j = 1;    while(~scanf("%d", &n))        printf("Case %d: %d\n", j++, dp[n]);    return 0;}

0 0