您的位置:首页 > 其它

uva 1645 count 水题

2017-10-14 14:30 288 查看
题意 输入n 统计有多少个n节点的有根树 使每个深度中所有节点的子节点数相同 

例如 n=4 答案是3 n = 7 答案是 10

瞬间想到递推 第一层一定放一个 那么剩下 n-1 个节点 假设放 i 个 在下一层 为了满足 每个深度的所有节点的子节点数 相同 那么 ( n - 1 - i ) % i == 0

根据例子  f ( 4 )  = f ( 3 ) + f ( 1 ) 

f ( 7 )  = f ( 6 )  +  f ( 3 ) + f  ( 2 )  + f ( 1 ) 

 直接打表 输出即可  

#include <bits/stdc++.h>

using namespace std;

long long num[1005]={0};

void init()
{
int i,j;
num[1]=num[2]=1;
for(i=3;i<=1000;i++)
{
for(j=i-1;j>0;j--)
{
int x=i-1;
if((x-j)%j==0)
{
num[i]+=num[j];
num[i]%=1000000007;
}
}
}
}

int main()
{
int i,j,x,y,q,p,n,m;
init();
int k=1;
while(cin>>n)
{
cout<<"Case "<<k++<<": "<<num
<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数论 uva 紫书