百搭背心★瘋搶↘120直擊★美車模手癢不小心...吉隆坡最便宜行程一覽表療傷止痛,王郁琦先下台!
2013-12-05 15:49:36 人氣(104) | 回應(0) | 推薦(0) | 收藏(0) 上一篇 | 下一篇

[UVA] 12643 - Tennis Rounds

0
收藏
0
推薦

SampleInput

3 2 5
3 5 7
2 1 2
2 2 1

SampleOutput

3
2
1
1



找兩個節點的最小共同祖先,計算第幾回合會對戰到。

藉由 k, 2*k, 2*k+1 的編號方式,除 2 即可得到共同祖先。


#include <stdio.h>

int main() {
    int n, i, j, k;
    while(scanf("%d %d %d", &n, &i, &j) == 3) {
        i += (1<<n)-1;
        j += (1<<n)-1;
        for(k = 0; k <= n; k++)
            if((i>>k) == (j>>k))
                printf("%d\n", k), k = n;
    }
    return 0;
}

12643Tennis Rounds
台長:Morris
人氣(104) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 教育學習(進修、留學、學術研究、教育概況) | 個人分類: UVA |
此分類下一篇:[UVA][KMP] 12604 - Caesar Cipher
此分類上一篇:[UVA][Easy] 12650 - Dangerous Dive

我要回應
是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入以下數字 (ex:123)

(有*為必填)
詳全文