24h購物| | PChome| 登入
2013-12-05 15:49:36| 人氣1,512| 回應0 | 上一篇 | 下一篇

[UVA] 12643 - Tennis Rounds

推薦 0 收藏 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;
}

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

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文