如果一棵树的所有非叶节点都恰好有n个儿子,那么我们称它为严格n元树。如果该树中最底层的节点深度为d
(根的深度为0),那么我们称它为一棵深度为d的严格n元树。例如,深度为2的严格2元树有三个,如下图:
给出n, d,编程数出深度为d的n元树数目。
标签:problems app pre href tput esc des range images
如果一棵树的所有非叶节点都恰好有n个儿子,那么我们称它为严格n元树。如果该树中最底层的节点深度为d
(根的深度为0),那么我们称它为一棵深度为d的严格n元树。例如,深度为2的严格2元树有三个,如下图:
给出n, d,编程数出深度为d的n元树数目。
仅包含两个整数n, d( 0 < n < = 32, 0 < = d < = 16)
仅包含一个数,即深度为d的n元树的数目。
动态规划 + 高精度
dp_i表示深度为i的树的数目,dp_0 = dp_1 = 1
dp_i = Sum(dp_0...dp_i-1)^n - Sum(dp_0...dp_i-2)^n
1 def main() : 2 line = raw_input().split() 3 n = int(line[0]) 4 m = int(line[1]) 5 if m == 0 : 6 print 1 7 else : 8 f = [1, 1] 9 s = [1, 2] 10 for i in range(2, m + 2) : 11 f.append(s[i - 1]**n - s[i - 2]**n) 12 s.append(s[i - 1] + f[i]) 13 print f[m] 14 15 if __name__ == "__main__" : main()
1 def main() : 2 line = raw_input().split() 3 n = int(line[0]) 4 m = int(line[1]) 5 if m == 0 : 6 print 1 7 else : 8 f = [1] 9 for i in range(0, m + 1) : 10 f.append(f[i]**n + 1) 11 print f[m] - f[m - 1] 12 13 if __name__ == "__main__" : main()
@Author: YouSiki
标签:problems app pre href tput esc des range images
原文地址:http://www.cnblogs.com/yousiki/p/6106866.html