1089: [SCOI2003]严格n元树
Time Limit: 1 Sec Memory Limit: 162 MB
Submit: 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
Sample Output
【样例输出1】
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
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