bzoj1089 高精度 嚴格n元樹

2021-08-16 05:59:12 字數 1695 閱讀 2159

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】

【樣例輸出2】

【樣例輸出2】

題解

神題。想了半天想不出來。結果是道數學題

設f[i]為深度<=i的n元樹的個數

那麼對於深度為i的n元樹的個數,就是f[i-1]^n個,因為他是n棵深度i-1的樹湊起來的

但是還有乙個問題。。

假如只有乙個根呢?

所以是f[i]=f[i-1]^n+1

最後輸出f[d]-f[d-1]

#include

#include

#include

#include

#include

using namespace std;

struct node

}f[35];

node multi(node n1,node n2)

int i=no.len;

while(no.a[i+1]>0)

while(no.a[i]==0 && i>1)i--;

no.len=i;

return

no;}

node del(node n1,node n2)

int i=no.len;

while(no.a[i+1]>0)

while(no.a[i]==0 && i>1)i--;

no.len=i;

return

no;}

node add(node n1,int n2)

int i=no.len;

while(no.a[i+1]>0)

while(no.a[i]==0 && i>1)i--;

no.len=i;

return

no;}

int n,d;

node pow_mod(node n1,int b)

return ret;

}int main()

f[0].a[1]=1;f[0].len=1;

for(int i=1;i<=d;i++)

node ans=del(f[d],f[d-1]);

for(int i=ans.len;i>=1;i--)printf("%d",ans.a[i]);

printf("\n");

return

0;}

bzoj1089 嚴格n元樹

如果一棵樹的所有非葉節點都恰好有n個兒子,那麼我們稱它為嚴格n元樹。如果該樹中最底層的節點深度為d 根的深度為0 那麼我們稱它為一棵深度為d的嚴格n元樹。例如,深度為 的嚴格 元樹有三個,如下圖 給出n,d,程式設計數出深度為d的n元樹數目。僅包含兩個整數n,d 0 僅包含乙個數,即深度為d的n元樹...

bzoj1089 SCOI2003 嚴格n元樹

題目 遞推公式 f i f i 1 n 1 當然,這樣看的話顯然long long是存不下的233。要用高精度對吧,但是,我很懶呀。so,粘個模板吧。include using namespace std long long f 17 int n,d long long ksm long long ...

BZOJ 2729 高精度 組合數學

思路 考慮 把男生排成一排 女生和老師往裡插 分成兩種情況.1.女生中間夾著老師 2.女生中間沒有夾著老師 求一下組合 階乘就好了 先放python 簡潔易懂 def fact n temp 1 for i in range 1,n 1 temp i return temp defc n,m if ...