zzuli OJ 1110: 最近共同祖先(函式專題)
Description
如上圖所示,由正整數1, 2, 3, ...組成了一棵無限大的二叉樹。從某一個結點到根結
點(編號是1 的結點)都有一條唯一的路徑,比如從10 到根結點的路徑是(10, 5, 2, 1),
從4 到根結點的路徑是(4, 2, 1),從該結點到根結點的路徑上的所有結點稱為該結點的祖先。現在的問題就是,給定x 和y,求x和y的最近共同祖先,比如,10和4最近共同祖先是2,10和5的最近共同祖先是5。
定義遞迴函式
int common(int x, int y)
{
如果x==y, return x;
如果x>y,求x/2與y的共同祖先;
否則,求x與y/2的共同祖先;
}
Input
輸入只有一行,包括兩個正整數x 和y,這兩個正整數都不大於1000。
Output
輸出只有一個正整數,即x和y的最近共同祖先。
Sample Input
10 4Sample Output
2HINT
Source
#include<stdio.h> int common(int x,int y) { if(x==y) return x; else if(x>y) common(x/2,y); else common(x,y/2); } int main() { int x,y,z; scanf("%d%d",&x,&y); z=common(x,y); printf("%d",z); }
相關推薦
zzuli OJ 1110: 最近共同祖先(函式專題)
Description 如上圖所示,由正整數1, 2, 3, ...組成了一棵無限大的二叉樹。從某一個結點到根結 點(編號是1 的結點)都有一條唯一的路徑,比如從10 到根結點的路徑是(10,
ZZULIOJ.1110: 最近共同祖先(函式專題)
1110: 最近共同祖先(函式專題) 題目描述 如上圖所示,由正整數1, 2, 3, …組成了一棵無限大的二叉樹。從某一個結點到根結點(編號是1 的結點)都有一條唯一的路徑,比如從10 到根結點的路徑是(10, 5, 2, 1),從4 到根結點的路徑是(4, 2, 1),從該結點到根結
1110: 最近共同祖先(函式專題)
題目描述 如上圖所示,由正整數1, 2, 3, ...組成了一棵無限大的二叉樹。從某一個結點到根結 點(編號是1 的結點)都有一條唯一的路徑,比如從10 到根結點的路徑是(10, 5, 2, 1), 從4 到根結點的路徑是(4, 2, 1),從該結點到根結點的路徑上的所有結點稱為該結點的祖先
zzuli OJ 1100: 求組合數(函式專題)
Description 馬上要舉辦新生程式設計競賽了,與以往不同的是,本次比賽以班為單位,為了全面衡量一個班級的整體水平,要求從一個班的m位同學中任選k位同學代表本班參加比賽,問有多少種組合方案。顯
zzuli OJ 1103: 平均學分績點(函式專題)
平均學分績點(Grade Point Average,即GPA)是以學分與績點作為衡量學生學習的量與質的計算單位,以取得一定的學分和平均學分績點作為畢業和獲得學位的標準,實施多樣的教育規格和較靈活的教學管理制度。 大學裡每一門課程都有一定的學分。只有通過這門課的考試,才能獲得相應的學分。課程績點的計算方法通
zzuli OJ 1112: 進位制轉換(函式專題)
輸入一個十進位制整數n,輸出對應的二進位制整數。常用的轉換方法為“除2取餘,倒序排列”。將一個十進位制數除以2,得到餘數和商,將得到的商再除以2,依次類推,直到商等於0為止,倒取除得的餘數,即為所求的二進位制數。例如,把52換算成二進位制數的計算過程如下圖: 52除以2得到的餘數依次為0,0,1,0,1,
zzuli OJ 1105: 判斷友好數對(函式專題)
Description 輸入兩個正整數m和n,順序輸出m到n之間的所有友好數對。 如果兩個整數的所有正因子之和(包括1,不包括自身)等於對方,就稱這對數是友好的。例如:1184和1210是友好數對,
zzuli OJ 1109: 數根(函式專題)
Description 輸入一個正整數,輸出該數的數根。數根可以通過把一個數的各個位上的數字加起來得到。如果得到的數是一位數,那麼這個數就是數根。如果結果是兩位數或者包括更多位的數字,那麼再把這些
zzuli OJ 1096: 水仙花數(函式專題)
Description 春天是鮮花的季節,水仙花就是其中最迷人的代表,數學上有個水仙花數,他是這樣定義的: “水仙花數”是指一個三位數,它的各位數字的立方和等於其本身,比如:153=13+53+3
利用棧求二叉樹中兩節點的最近共同祖先(無父節點指標)
最近的資料結構課剛教完二叉樹,昨晚在做學院自己弄的一個整合環境上的資料結構題目時,看到一個比起其他二叉樹簡單遍歷、或者計算葉子或者深度看起來難一點的題目。就是最近共同祖先節點問題(NCA-nearest common ancestor)。 想了挺久終於用遞迴把它解決了。但
鄭輕OJ 1103: 平均學分績點(函式專題)留著以後自己算
平均學分績點(Grade Point Average,即GPA)是以學分與績點作為衡量學生學習的量與質的計算單位,以取得一定的學分和平均學分績點作為畢業和獲得學位的標準,實施多樣的教育規格和較靈活的教學管理制度。 大學裡每一門課程都有一定的學分。只有通過這門課的考試,才能獲得相應的學分。課程績點的計算方法通
ZZULIOJ.1108: 列印數字圖形(函式專題)
1108: 列印數字圖形(函式專題) 題目描述 從鍵盤輸入一個整數n(1≤n≤9),打印出指定的數字圖形。要求在程式中定義並呼叫如下函式:PrintSpace(m)用來輸出m個空格;PrintLine(m)來輸出一行中的數字串"12…m…21"(該行中的最大數字是m)。函式原型如下:
ZZULIOJ.1109: 數根(函式專題)
1109: 數根(函式專題) 題目描述 輸入一個正整數,輸出該數的數根。數根可以通過把一個數的各個位上的數字加起來得到。如果得到的數是一位數,那麼這個數就是數根。如果結果是兩位數或者包括更多位的數字,那麼再把這些數字加起來。如此進行下去,直到得到是一位數為止。比如,對於24來說,把2
ZZULIOJ.1112: 進位制轉換(函式專題)
1112: 進位制轉換(函式專題) 題目描述 輸入一個十進位制整數n,輸出對應的二進位制整數。常用的轉換方法為“除2取餘,倒序排列”。將一個十進位制數除以2,得到餘數和商,將得到的商再除以2,依次類推,直到商等於0為止,倒取除得的餘數,即為所求的二進位制數。例如,把52換算成二進位制
ZZULIOJ.1097: 計算平均成績(函式專題)
1097: 計算平均成績(函式專題) 題目描述 輸入某位同學各門課的成績,輸出平均成績。輸入的成績均為五級製成績,五級製成績轉換為百分之成績的規則如下:'A’轉換為百分之成績為95分,'B’對應85分,C對應75分,'D’對應65分,'E’對應40分。 輸出的平均成績為一個實數,保留
ZZULIOJ.1096: 水仙花數(函式專題)
1096: 水仙花數(函式專題) 題目描述 春天是鮮花的季節,水仙花就是其中最迷人的代表,數學上有個水仙花數,他是這樣定義的: “水仙花數”是指一個三位數,它的各位數字的立方和等於其本身,比如:153=13+53+33。 現在要求輸出所有在m和n範圍內的水仙花數。 輸入 輸入資料
ZZULIOJ.1102: 火車票退票費計算(函式專題)
1102: 火車票退票費計算(函式專題) 題目描述 2013年起,火車票退票費比例下調:票面乘車站開車時間前48小時以上的按票價5%計退票費。同時,車票退票費的計算方法不再四捨五入到元為單位,而是以5角為單位:尾數小於0.25元的捨去、不小於0.25元且小於0.75元的計為0.5元、
ZZULIOJ.1101: 逆序數字(函式專題)
1101: 逆序數字(函式專題) 題目描述 輸入一個正整數n,計算n的逆序數m,輸出m與n的和。要求程式定義一個inverse()函式和一個main()函式,inverse()函式接收一個整數值,返回這個數中數字逆序後的結果值。例如,給定數7631,函式返回1367 。 int
ZZULIOJ.1100: 求組合數(函式專題)
1100: 求組合數(函式專題) 題目描述 馬上要舉辦新生程式設計競賽了,與以往不同的是,本次比賽以班為單位,為了全面衡量一個班級的整體水平,要求從一個班的m位同學中任選k位同學代表本班參加比賽,問有多少種組合方案。顯然,這個組合數是m!/(k!(m-k)!)。要求編寫函式fact(
ZZULIOJ.1107: 迴文數猜想(函式專題)
1107: 迴文數猜想(函式專題) 題目描述 一個正整數,如果從左向右讀(稱之為正序數)和從右向左讀(稱之為倒序數)是一樣的,這樣的數就叫回文數。任取一個正整數,如果不是迴文數,將該數與他的倒序數相加,若其和不是迴文數,則重複上述步驟,一直到獲得迴文數為止。例如:68變成154(68