Comet OJ 夏季欢乐赛 完全k叉树
完全k叉樹(shù)
https://cometoj.com/contest/59/problem/A?problem_id=2712
題目描述
?
歡迎報(bào)考JWJU!這里有豐富的社團(tuán)活動(dòng),比如為夢(mèng)想奮斗的ACM集訓(xùn)隊(duì),經(jīng)常組織飛行棋的桌游協(xié)會(huì),喜歡“唱,跳,rap,籃球”的籃球協(xié)會(huì),更奇特的是——讓人耳目一新的攀樹(shù)協(xié)會(huì)。顧名思義,攀樹(shù)協(xié)會(huì)會(huì)經(jīng)常組織大家攀爬一些樹(shù),比如李超樹(shù),左偏樹(shù),帶花樹(shù),智慧樹(shù)等等。經(jīng)過(guò)社團(tuán)組織的一番培訓(xùn)后,同學(xué)們已經(jīng)學(xué)會(huì)了如何在樹(shù)上的相鄰結(jié)點(diǎn)中來(lái)回爬動(dòng)。
不過(guò)上述的樹(shù)太沒(méi)意思了,RegenFallenRegenFallen同學(xué)向往更刺激的挑戰(zhàn),今天他要挑戰(zhàn)的項(xiàng)目是一棵完全?kk?叉樹(shù)。
完全kk叉樹(shù)的定義:一個(gè)?mm?層的完全?kk?叉樹(shù)的前?m-1m?1?層均為滿(mǎn)?kk?叉樹(shù),且第?mm?層的結(jié)點(diǎn)全部聚集在樹(shù)的左側(cè)。
因?yàn)?span id="ozvdkddzhkzd" class="katex">RegenFallenRegenFallen是一個(gè)持久的男人,所以他希望一次能爬盡量長(zhǎng)的路徑(不走重復(fù)的點(diǎn)),所以他想讓你告訴他,假如現(xiàn)在有一棵?nn?個(gè)點(diǎn)的完全?kk?叉樹(shù),每條邊的長(zhǎng)度均為?11,從樹(shù)上的某一點(diǎn)到另一點(diǎn)的最大距離是多少。
?
輸入描述
?
第一行給出一個(gè)?tt?(t≤10^{4}t≤104) 代表測(cè)試用例的組數(shù)。
接下來(lái)t行,每行包含兩個(gè)正整數(shù)?k, nk,n?(1 \le k \le 10^9, 2 \le n \le 10^91≤k≤109,2≤n≤109) 意義如題面所示。
?
輸出描述
?
對(duì)于每個(gè)測(cè)試用例,輸出一行一個(gè)正整數(shù)表示答案。
?
樣例輸入 1?
1 2 3樣例輸出 1
2提示
樣例給出了一個(gè)3個(gè)點(diǎn)的完全二叉樹(shù),即第一層有一個(gè)點(diǎn),第二層有兩個(gè)點(diǎn)。那么可以選擇第二層的兩個(gè)點(diǎn)來(lái)計(jì)算距離,其距離為2,即為樹(shù)上的最大距離。
?
模擬題,累加層數(shù)分類(lèi)討論可AC
CODE;
#include<cstdio> #define ll long long using namespace std; int main() {int t;scanf("%d",&t);while(t--){ll k,n;scanf("%lld%lld",&k,&n);if(k==1){printf("%lld\n",n-1);continue;}ll temp=1,cnt=0;while(n){n-=temp;cnt++;temp*=k;if(n<temp)break;}if(n==0)printf("%lld\n",cnt*2-2);else if(n<=temp/k)printf("%lld\n",cnt*2-1);elseprintf("%lld\n",cnt*2);}return 0; }?
轉(zhuǎn)載于:https://www.cnblogs.com/fusiwei/p/11262466.html
總結(jié)
以上是生活随笔為你收集整理的Comet OJ 夏季欢乐赛 完全k叉树的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 薛定谔的猫——.NET 4.1 中的新基
- 下一篇: CCPC-Wannafly Comet