2014 第五屆藍橋杯 03 猜字母(java)
阿新 • • 發佈:2019-02-06
猜字母
把abcd...s共19個字母組成的序列重複拼接106次,得到長度為2014的串。
接下來刪除第1個字母(即開頭的字母a),以及第3個,第5個等所有奇數位置的字母。
得到的新串再進行刪除奇數位置字母的動作。如此下去,最後只剩下一個字母,請寫出該字母。
答案是一個小寫字母,請通過瀏覽器提交答案。不要填寫任何多餘的內容。
結果:
q
思路:
先將2014個字元放到char型別的陣列中,將序列中偶數位置的數放在陣列前面,直到記錄的長度為1,輸出序列中第一個數即為答案。
注意:
下面的程式碼中,k++是k先不自加,執行完當前操作後再加1,++k正好相反。所以k是從0開始的。
程式碼如下:
import java.util.Scanner; public class Main { public static void main(String[] args) { String s = "abcdefghijklmnopqrs"; String ss = ""; for(int i=1;i<=106;i++){ ss+=s;//重複拼接106次 } char[] arr = ss.toCharArray(); int len = arr.length; while(len!=1){ int k=0; for(int i=0;i<len;i++){ if(i%2!=0){//得到每一次重新排列的偶數列 arr[k++]=arr[i];//把偶數列移動到最前面 }else{ len--; } } } System.out.println(arr[0]); } }