1089: [SCOI2003]严格n元树
Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1955 Solved: 989
[Submit][Status][Discuss]
Description
如果一棵树的所有非叶节点都恰好有n个儿子,那么我们称它为严格n元树。如果该树中最底层的节点深度为d
(根的深度为0),那么我们称它为一棵深度为d的严格n元树。例如,深度为2的严格2元树有三个,如下图:
给出n, d,编程数出深度为d的n元树数目。
Input
仅包含两个整数n, d( 0 < n < = 32, 0 < = d < = 16)
Output
仅包含一个数,即深度为d的n元树的数目。
Sample Input
【样例输入1】
2 2
【样例输入2】
2 3
【样例输入3】
3 5
2 2
【样例输入2】
2 3
【样例输入3】
3 5
Sample Output
【样例输出1】
3
【样例输出2】
21
【样例输出2】
58871587162270592645034001
3
【样例输出2】
21
【样例输出2】
58871587162270592645034001
HINT
Source
阿西吧辣鸡高精度千进制mmp
python大法好!
f[i]=f[i-1]^n+1 cout<<f[d]-f[d-1];
1 n,d=map(int, raw_input().split()) 2 if d==0: 3 print 1 4 else: 5 f=[1] 6 for i in range(0, d+1): 7 f.append(f[i]**n+1) 8 print f[d]-f[d-1]
laj的辣鸡十进制高精度…… _(:зゝ∠)_
1 #include "bits/stdc++.h" 2 using namespace std; 3 typedef long long LL; 4 const int MAX=20005; 5 int n,m; 6 struct Node{ 7 int a[MAX]; 8 Node (){memset(a,0,sizeof(a));} 9 Node operator * (const Node &tt) { 10 Node an; 11 an.a[0]=a[0]+tt.a[0]; 12 int i,j; 13 for (i=1;i<=a[0];i++) 14 for (j=1;j<=tt.a[0];j++) 15 an.a[i+j-1]+=a[i]*tt.a[j], 16 an.a[i+j]+=an.a[i+j-1]/10, 17 an.a[i+j-1]%=10; 18 while (an.a[an.a[0]]==0) an.a[0]--; 19 return an; 20 } 21 Node operator + (const Node &tt) { 22 int i,j; 23 Node an;an.a[0]=max(a[0],tt.a[0])+1; 24 for (i=1;i<=max(a[0],tt.a[0]);i++){ 25 an.a[i]+=a[i]+tt.a[i]; 26 an.a[i+1]+=an.a[i]/10; 27 an.a[i]%=10; 28 } 29 while (an.a[an.a[0]]==0) an.a[0]--; 30 return an; 31 } 32 Node operator - (const Node &tt) { 33 int i,j; 34 Node an; an.a[0]=a[0]; 35 for (i=1;i<=a[0];i++){ 36 if (a[i]<tt.a[i]) a[i+1]--,a[i]+=10; 37 an.a[i]=a[i]-tt.a[i]; 38 } 39 while (an.a[an.a[0]]==0) an.a[0]--; 40 return an; 41 } 42 void out(){ 43 int i,j; 44 for (i=a[0];i>=1;i--) printf("%d",a[i]); 45 } 46 }f[55]; 47 Node ksm(Node x,int y){ 48 Node an;an.a[0]=an.a[1]=1; 49 while (y){ 50 if (y&1) an=an*x; 51 x=x*x; 52 y>>=1; 53 } 54 return an; 55 } 56 int main(){ 57 freopen ("tree.in","r",stdin);freopen ("tree.out","w",stdout); 58 int i,j; 59 scanf("%d%d",&n,&m); 60 f[0].a[0]=f[0].a[1]=1; 61 for (i=1;i<=m;i++) 62 f[i]=ksm(f[i-1],n)+f[0]; 63 Node ans=f[m]-f[m-1]; 64 ans.out(); 65 return 0; 66 }
未来是什么样,未来会发生什么,谁也不知道。
但是我知道,
起码从今天开始努力,
肯定比从明天开始努力,
要快一天实现梦想。
千里之行,始于足下! ——《那年那兔那些事儿》