I I U P C 2 0 0 9
上一屆的 IIUPC 有一題「達文西密碼」是以丹布朗的暢銷書「達文西密碼」為故事背景。這一題則是以科技驚悚小說「數位堡壘」為背景。題目給你一個密文,你要用下述的解碼方式來解碼。比如說,如果密文如下:
WECGEWHYAAIORTNU
輸出則是:
WEAREWATCHINGYOU
上例中所給的密文 "WECGEWHYAAIORTNU" 有 16 個字元,也就是 4 的平方。請把這些字元以「列優先」(row major,第一列放滿後再放第二列,再第三列……) 的方式置入一個 n ´ n (本例為 4 ´ 4) 的格子。本例密文放置完成後的格子如下:
W E C G
E W H Y
A A I O
R T N U
當我們以「行優先」(column major,取完第一行再取第二行,然後第三行) 的方式將上面格子的字元取出便可以得到以下的明文:
WEAREWATCHINGYOU
3 WECGEWHYAAIORTNU DAVINCICODE DTFRIAOEGLRSI TS
WEAREWATCHINGYOU INVALID DIGITAL FORTRESS
在你用 cin >> t; 去輸入第一個數字之後,其後的換行字元會留在輸入檔中等待輸入。之後第一次執行 getline (cin, s); 時會碰到這個換行字元,s 會傳會一個空字串。您可以用以下的方式來輸入:
cin >> t; getline (cin, s); //讀掉t後面的換行 while (t--) { getline (cin, s); : : }
編號 | 身分 | 題目 | 主題 | 人氣 | 發表日期 |
41337 | toseanlin@gm ... (Dr. SeanXD) | d671 | 80 | 2024-07-18 10:02 | |
26722 | 406490150@gm ... (我是朱朱) | d671 | 683 | 2021-08-21 18:14 |