題目連結
題意:
給你落落長的文字
根據範例輸出入的規則
輸出對應的答案
解法:
看完題目會發現什麼都沒講
只能從範例輸出入觀察
也因為這樣,直覺認為跟ASCII有關
所以這題考的是對ASCII的熟悉與字串處理
對於輸入,我先數了行數
有o的行數跟輸出的字元數差不多
可以猜到一行對應一個字元
. 不考慮有8位,大概是二進位的組合
拿A來說,ASCII = 65
首行有2個圈圈
65 = 01000001(2)
| o . o|
拿 q 再驗證
113 = 01110001(4)
| ooo . o|
照這個想法建一個陣列
依序存 128, 64, ..., 1
然後讀測資遇到o就加上該值
(二進位轉十進位)
最後以字元形式輸出
程式(Java):
題意:
給你落落長的文字
根據範例輸出入的規則
輸出對應的答案
解法:
看完題目會發現什麼都沒講
只能從範例輸出入觀察
也因為這樣,直覺認為跟ASCII有關
所以這題考的是對ASCII的熟悉與字串處理
對於輸入,我先數了行數
有o的行數跟輸出的字元數差不多
可以猜到一行對應一個字元
. 不考慮有8位,大概是二進位的組合
拿A來說,ASCII = 65
首行有2個圈圈
65 = 01000001(2)
| o . o|
拿 q 再驗證
113 = 01110001(4)
| ooo . o|
照這個想法建一個陣列
依序存 128, 64, ..., 1
然後讀測資遇到o就加上該值
(二進位轉十進位)
最後以字元形式輸出
程式(Java):
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.*; | |
public class Main { | |
public static void main(String args[]) { | |
Scanner sc = new Scanner(System.in); | |
int num[] = {0, 128, 64, 32, 16, 8, 0, 4, 2, 1}; | |
sc.nextLine(); | |
while (sc.hasNext()) { | |
String s = sc.nextLine(); | |
if (s.equals("___________")) | |
break; | |
int sum = 0; | |
for (int i = 1; i < s.length(); i++) | |
if (s.charAt(i) == 'o') | |
sum += num[i]; | |
System.out.print((char)sum); | |
} | |
} | |
} |
留言
張貼留言