內容:

達文西密碼書中,主張耶穌在最後晚餐時所使用的聖杯是埋在英國某處,其實不然。根據可靠消息顯示,聖杯其實還靜靜地躺在地球的另一個角落,由一位歷代相傳、忠心耿耿的守護者看管著記載聖杯所在之處的地圖。

但由於達文西密碼一書轟動全球,引發了一波又一波尋找聖杯的浪潮。這位守護者因此憂心重重,深怕聖杯被遭人盜取。最近守護者聽說你是地圖隱藏專家,為避免地圖外洩,特來找你來研究看看,如何能將地圖妥善隱藏。

目前地圖是繪製在一塊圓形的石碑上,經過你的研究之後,決定建議守護者將石碑以特殊高壓方式切割後,分藏各地。這個高壓切割方法相當特殊,它是先在這形石碑的邊緣打上一些小洞,然後用高壓槍對石碑施壓。當壓力充分分佈到石碑後,石碑就會沿著連結那些小洞的所有直線裂成好幾塊。例如,如果打了 3 個洞,圓形石碑就會裂成 4 塊— 1 個三角形和 3 塊半月形狀。如果打了 4 個洞,圓形石碑就會裂成 8。如果打了 5 個洞,圓形石碑就會裂成 16 塊(如下圖所示)。但守護者還想知道,若在圓形石碑的邊緣打 n 個洞,最多可以將石碑分成幾塊?你決定寫支程式來回答這個問題。

d025: 2007 程式達人 H - 隱藏聖杯地圖  

很簡單的一道題目

要限制範圍 加個if 就OK了

輸入說明:

輸入檔由多列組成。每個測試案例是一列存一個數字 n, (1 ≦ n ≦ 100)。輸入檔中最多有 50 筆資料(列),當 n = 0 時,表示輸入檔的 eof 。

輸出說明:

每列印出所能切割出的最大數目。(當 1 ≦ n ≦ 100,最大值小於 224-1 ).

範例輸入:

1 
2 
3 
4 
5 
10 
0

範例輸出:

1 
2 
4 
8 
16 
256
===================
import java.util.ArrayList;
import java.util.Scanner;


public class HideCup {
    public static void main(String[] args) {
        Scanner scan =new Scanner(System.in);
        HideCup hc=new HideCup();
        ArrayList<Integer> intArray =new ArrayList<Integer>();
        System.out.println("Please enter holes until enter 0:");
        while(0<1){
            intArray.add(scan.nextInt());
            //如果輸入為0,移除並離開
            if(intArray.get(intArray.size()-1).equals(0)){
                intArray.remove(intArray.size()-1);
                break;
            }
        }
        hc.Block(intArray);
    }
    //計算並列印塊數
    private void Block(ArrayList<Integer> data){
        for(int x=0;x<data.size();x++){
            System.out.println("洞數:"+data.get(x)+"塊數:"+(int)Math.pow(2,data.get(x)-1));
        }
    }

}

創作者介紹

Mazs's Notes

cookiesp 發表在 痞客邦 PIXNET 留言(0) 人氣()