24h購物| | PChome| 登入
2011-05-29 22:37:34| 人氣935| 回應1 | 上一篇 | 下一篇

d923. 規律

推薦 0 收藏 0 轉貼0 訂閱站台

內容 :

請觀察下列規律(此為部分數據,請自行延伸)

現在給兩正整數I、J

請輸出第I(直)行第J(橫)列之數字

(避免有網友看不到圖,提供三個空間:1 2 3)

輸入說明 :

每筆測資共輸入一行

此行包含兩正整數I J(1<=I、J<=2^30)

輸出說明 :

請輸出第I(直)行第J(橫)列之數字

範例輸入 :

2 3

範例輸出 :

12

提示 :

出處 :

(管理:B88000005)

作法 : 模擬
說真的,我不太會找規律,用暴力法慢慢切吧
大概是O(logN)

/**********************************************************************************/
/*  Problem: d923 "規律" from                                                   */
/*  Language: C                                                                   */
/*  Result: AC (3ms, 270KB) on ZeroJudge                                          */
/*  Author: morris1028 at 2011-05-29 22:22:01                                     */
/**********************************************************************************/


#include<stdio.h>
#include<stdlib.h>
main() {
    int i, j;
    while(scanf("%d %d", &i, &j) == 2) {
        long long t, Ans = 0;
        while(1) {
            t = 2;
            while(t < i || t < j) {
                t *= 2;
            }
            if(i == 1 && j == 1) {Ans++;break;}
            if(t / 2 >= i && t / 2 < j)
                Ans += t*t / 2, j -= t / 2;
            else if(t / 2 < i && t / 2 < j)
                Ans += t*t / 4, i -= t / 2, j -= t / 2;
            else
                Ans += t*t / 4 * 3, i -= t / 2;
        }
        printf("%lld\n", Ans);
    }
    return 0;
}

台長: Morris
人氣(935) | 回應(1)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 不分類 | 個人分類: ZeroJudge |
此分類下一篇:d624. 燈泡問題
此分類上一篇:d925. 平均高度

SOMEONE
規律似乎是這樣:
左上→右下→右上→右下 為一區間
左上區間→右下區間→右上區間→右下區間 為一大區間
以此列推
但用此規律有辦法算嗎?
2012-02-29 16:58:55
版主回應
規律是這樣沒錯, 但你有沒有發現,
一個正方形方塊彼此之間的差, 都是 2 的次方數 !
我的做法便是這個樣子
2012-03-01 08:02:15
是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文