24h購物| | PChome| 登入
2012-03-05 19:13:45| 人氣432| 回應0 | 上一篇 | 下一篇

[UVA][JAVA][System.in.read] 371 - Ackermann Functions

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

public class Main {
    public static void main(String[] args) {
        int L, H, i, tmp;
        while(true) {
            L = parseInt();
            H = parseInt();
            if(L > H) {
                tmp = L;
                L = H;
                H = tmp;
            }
            if(L == 0 && H == 0)
                break;
            int longest = 0, v = 0;
            for(i = L; i <= H; i++) {
                tmp = function((long)i);
                if(tmp > longest) {
                    longest = tmp;
                    v = i;
                }
            }
            System.out.printf("Between %d and %d, %d generates the longest sequence of %d values.\n",
                    L, H, v, longest);
        }
    }
    public static int function(long n) {
        int length = 0;
        do {
            if((n&1) != 0)
                n = n*3+1;
            else
                n /= 2;
            length++;
        } while(n != 1);
        return length;
    }
    public static int parseInt() {
        int i, value = 0, tmp;
        try {
            tmp = System.in.read();
            while(tmp < '0' || tmp > '9')
                tmp = System.in.read();
            value = tmp-'0';
            tmp = System.in.read();
            while(tmp >= '0' && tmp <= '9') {
                value = value * 10 + tmp-'0';
                tmp = System.in.read();
            }
        } catch(Exception e) {}
        return value;
    }
}

台長: Morris
人氣(432) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 不分類 | 個人分類: UVA |
此分類下一篇:[UVA] 10000 - Longest Paths
此分類上一篇:[UVA][JAVA][Sanner] 371 - Ackermann Functions

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