bzoj1089: [SCOI2003]嚴格n元樹(高精度)
題目傳送門
。
解法:
好神啊。
f[i]表示深度小於等於i的嚴格n元樹。
那麼f[i]怎麼用f[i-1]表示呢。
對於任意一個深度為i的嚴格n元樹。
那麼它的根一定有n個兒子。
這樣我們就可以把它拆成一個根和n棵深度小於等於i-1的n元樹了。
那麼深度小於等於i-1的n元樹方案已經求出來了是f[i-1]了呀。
那麼在利用乘法原理得出f[i]=f[i-1]^n。
還沒完,還有一棵只有根節點的樹,所以f[i]還得+1。
程式碼實現:
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
using namespace std;
struct node {int len,a[11000];node() {len=0;memset(a,0,sizeof(a));}}a,b;
node jiafa(node n1) {
node no=n1;no.a[1]++;
for(int i=1;i<=no.len;i++) {no.a[i+1]+=no.a[i]/10;no.a[i]%=10;}
int i=no.len;while(no.a[i+1]>0) {i++;no.a[i+1]+=no.a[i]/10;no.a[i]%=10;}no.len=i;
return no;
}
node jianfa(node n1,node n2) {
node no;no.len=n1.len;
for(int i=1;i<=no.len;i++)no.a[i]=n1.a[i]-n2.a[i];
for(int i=1;i<=no.len;i++)if(no.a[i]<0){no.a[i]+=10;no.a[i+1]--;}
int i=no.len;while(no.a[i]==0&&i>1)i--;no.len=i;
return no;
}
node chengfa(node n1,node n2) {
node no;no.len=n1.len+n2.len-1;
for(int i=1;i<=n1.len;i++)for(int j=1;j<=n2.len;j++)no.a[i+j-1]+=n1.a[i]*n2.a[j];
for(int i=1;i<=no.len;i++) {no.a[i+1]+=no.a[i]/10;no.a[i]%=10;}
int i=no.len;while(no.a[i+1]>0) {i++;no.a[i+1]+=no.a[i]/10;no.a[i]%=10;}no.len=i;
return no;
}
node pow(node n1,int b) {
node ans;ans.len=1;ans.a[1]=1;
while(b!=0) {if(b%2==1)ans=chengfa(ans,n1);n1=chengfa(n1,n1);b/=2;}
return ans;
}
int main() {
int n,d;scanf("%d%d",&n,&d);
a.len=1;a.a[1]=1;
for(int i=1;i<d;i++) {a=pow(a,n);a=jiafa(a);}
b=pow(a,n);b=jiafa(b);b=jianfa(b,a);
for(int i=b.len;i>=1;i--)printf("%d",b.a[i]);printf("\n");
return 0;
}
相關文章
- 後序+中序(前序+中序)重構樹,嚴格O(N)演算法演算法
- [BJWC2010] 嚴格次小生成樹
- 嚴格單元測試造就完美軟體
- 嚴格模式和非嚴格模式區別模式
- 嚴格模式模式
- JavaScript嚴格模式JavaScript模式
- 嚴格模式use strict模式
- n叉樹vs二叉樹二叉樹
- n元語法
- 構造一個自定義二維 N*N 矩陣,從左上角第一個單元格依次填入1 - N*N的數字,從矩陣中指定單元格出發,經過相鄰的單元格(不可重複),走 X 步,輸出所有可能的路徑和每條路徑單元格對應的數字。矩陣
- JavaScript 中的 嚴格模式JavaScript模式
- N叉樹——前序遍歷
- N元語言模型模型
- js嚴格模式下的this指向,es6模組預設使用嚴格模式JS模式
- 高精度 加+ 高精度
- 高精度 減- 高精度
- 寬鬆相等( == )與嚴格相等( === )
- JS專題之嚴格模式JS模式
- vxe-table 樹表格單元格選擇複製貼上
- 高精度-高精度減法
- JSON.parse () 的非嚴格模式JSON模式
- 寬鬆相等和嚴格相等(==和===)
- 資料結構丨N叉樹資料結構
- C(Y,n)一元n次方的構造法
- 資料結構的故事之二叉樹, 字首樹, N叉樹資料結構二叉樹
- 360手機N7 lite與N7 Pro區別對比,價格相差200元哪一款好?
- 正規表示式 \n 元字元字元
- JavaScript嚴格模式(三)- 物件的禁止操作JavaScript模式物件
- JS 基礎篇(五):JS嚴格模式JS模式
- vxe-table 樹結構單元格選取與複製貼上
- Leetcode 559. N叉樹的最大深度LeetCode
- 百雞問題擴充套件-N雞問題N元錢買N只雞,公雞每隻5元,母雞每隻3元,小雞1元3只,N元錢必須剛好買N只雞,而且雞必須整隻買,不能劈開買。套件
- [題解]P4302 [SCOI2003] 字串摺疊字串
- 測試流程必須嚴格執行嗎?
- MySQL SELECT list is not in...MySQL關閉嚴格模式MySql模式
- 分割單元格
- 【部落格】替罪羊樹
- 高精度乘法