1. 程式人生 > >2014年第五屆藍橋杯試題(Java本科B組)

2014年第五屆藍橋杯試題(Java本科B組)

1.標題:武功祕籍


    小明到X山洞探險,撿到一本有破損的武功祕籍(2000多頁!當然是偽造的)。他注意到:書的第10頁和第11頁在同一張紙上,但第11頁和第12頁不在同一張紙上。


    小明只想練習該書的第81頁到第92頁的武功,又不想帶著整本書。請問他至少要撕下多少張紙帶走?


這是個整數,請通過瀏覽器提交該數字,不要填寫任何多餘的內容。

答案:7

2.標題:切面條


    一根高筋拉麵,中間切一刀,可以得到2根麵條。


    如果先對摺1次,中間切一刀,可以得到3根麵條。


    如果連續對摺2次,中間切一刀,可以得到5根麵條。


    那麼,連續對摺10次,中間切一刀,會得到多少麵條呢?


答案是個整數,請通過瀏覽器提交答案。不要填寫任何多餘的內容。


拿張紙撕一下

1 3

2 5

3 9

4 17

2的n次方加1,所以答案為1025

3.標題:猜字母


    把abcd...s共19個字母組成的序列重複拼接106次,得到長度為2014的串。


    接下來刪除第1個字母(即開頭的字母a),以及第3個,第5個等所有奇數位置的字母。


    得到的新串再進行刪除奇數位置字母的動作。如此下去,最後只剩下一個字母,請寫出該字母。


答案是一個小寫字母,請通過瀏覽器提交答案。不要填寫任何多餘的內容。

public class Main {

	public static void main(String[] args) {
		String str = "";
		for (int i=0; i<19; i++) {
			str += (char)('a' + i);
		}
		String temp = "";
		for (int i=0; i<106; i++) {
			temp += str;
		}
		while (temp.length() != 1) {
			String value = "";
			for (int i=0; i<temp.length(); i++) {
				if ((i & 1) == 1)
					value += temp.charAt(i);
			}
			temp = value;
		}
		System.out.println(temp);
	}

}
答案:q

4.標題:大衍數列


    中國古代文獻中,曾記載過“大衍數列”, 主要用於解釋中國傳統文化中的太極衍生原理。


    它的前幾項是:0、2、4、8、12、18、24、32、40、50 ...


    其規律是:對偶數項,是序號平方再除2,奇數項,是序號平方減1再除2。


    以下的程式碼打印出了大衍數列的前 100 項。


for(int i=1; i<100; i++)
{
if(________________)  //填空
System.out.println(i*i/2);
else
System.out.println((i*i-1)/2);
}


    請填寫劃線部分缺失的程式碼。通過瀏覽器提交答案。


注意:不要填寫題面已有的內容,也不要填寫任何說明、解釋文字。

(i & 1) == 0

5.標題:圓周率



    數學發展歷史上,圓周率的計算曾有許多有趣甚至是傳奇的故事。其中許多方法都涉及無窮級數。


    圖1.png中所示,就是一種用連分數的形式表示的圓周率求法。


    下面的程式實現了該求解方法。實際上數列的收斂對x的初始值 並不敏感。


    結果打印出圓周率近似值(保留小數點後4位,並不一定與圓周率真值吻合)。


double x = 111; 
for(int n = 10000; n>=0; n--){
int i = 2 * n + 1;
x = 2 + (i*i / x);
}

System.out.println(String.format("%.4f", ______________));

4 / (x - 1)