1. 程式人生 > >zzuli OJ 1110: 最近共同祖先(函式專題)

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 4

Sample Output

2

HINT

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