e578: 10222 - Decode the Mad man

  1. 1. 內容
  2. 2. 範例輸入
  3. 3. 範例輸出
  4. 4. 想法
  5. 5. 程式碼

CPE 一顆星選集 49 道必考題

題目連結:https://zerojudge.tw/ShowProblem?problemid=e578

內容

給定多個字元,輸出其在鍵盤上左邊第二個鍵(空白或換行直接輸出)。

範例輸入

k[r dyt i[o
p ‘[nt ]y[jyd.

範例輸出

how are you
i love program

想法

先用 map 建立好字元與其對應的字元,例如 mp[‘e’] = ‘q’ 代表 ‘e’ 的左邊第二鍵為 ‘q’。

使用 getline 一次讀取一列,依序查詢其所對應的字元,並且輸出。

程式碼

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <bits/stdc++.h>
#define fastio ios_base::sync_with_stdio(false), cin.tie(nullptr)
using namespace std;

map<char, char> mp;
int main(){
fastio;
string s;
mp['2'] = '`', mp['3'] = '1', mp['4'] = '2', mp['5'] = '3', mp['6'] = '4', mp['7'] = '5', mp['8'] = '6', mp['9'] = '7', mp['0'] = '8', mp['-'] = '9', mp['='] = '0';
mp['e'] = 'q', mp['r'] = 'w', mp['t'] = 'e', mp['y'] = 'r', mp['u'] = 't', mp['i'] = 'y', mp['o'] = 'u', mp['p'] = 'i', mp['['] = 'o', mp[']'] = 'p', mp['\\'] = '[';
mp['d'] = 'a', mp['f'] = 's', mp['g'] = 'd', mp['h'] = 'f', mp['j'] = 'g', mp['k'] = 'h', mp['l'] = 'j', mp[';'] = 'k', mp['\''] = 'l';
mp['c'] = 'z', mp['v'] = 'x', mp['b'] = 'c', mp['n'] = 'v', mp['m'] = 'b', mp[','] = 'n', mp['.'] = 'm', mp['/'] = ',';
while(getline(cin, s)){
for(int i = 0; i < s.length(); ++i){
if(s[i] == ' ') cout << " ";
else cout << mp[s[i]];
}
cout << "\n";
}
}