內容:
達文西密碼書中,主張耶穌在最後晚餐時所使用的聖杯是埋在英國某處,其實不然。根據可靠消息顯示,聖杯其實還靜靜地躺在地球的另一個角落,由一位歷代相傳、忠心耿耿的守護者看管著記載聖杯所在之處的地圖。
但由於達文西密碼一書轟動全球,引發了一波又一波尋找聖杯的浪潮。這位守護者因此憂心重重,深怕聖杯被遭人盜取。最近守護者聽說你是地圖隱藏專家,為避免地圖外洩,特來找你來研究看看,如何能將地圖妥善隱藏。
目前地圖是繪製在一塊圓形的石碑上,經過你的研究之後,決定建議守護者將石碑以特殊高壓方式切割後,分藏各地。這個高壓切割方法相當特殊,它是先在這形石碑的邊緣打上一些小洞,然後用高壓槍對石碑施壓。當壓力充分分佈到石碑後,石碑就會沿著連結那些小洞的所有直線裂成好幾塊。例如,如果打了 3 個洞,圓形石碑就會裂成 4 塊— 1 個三角形和 3 塊半月形狀。如果打了 4 個洞,圓形石碑就會裂成 8。如果打了 5 個洞,圓形石碑就會裂成 16 塊(如下圖所示)。但守護者還想知道,若在圓形石碑的邊緣打 n 個洞,最多可以將石碑分成幾塊?你決定寫支程式來回答這個問題。
很簡單的一道題目
要限制範圍 加個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)); } } }