[COCI2014-2015#3] STROJOPIS
题目描述
正确的打字正成为文化的重要组成部分。如果你仍然没有使用所有的十根手指来打字,你必须重新学习打字——然后你会打字更快,感觉更舒适和愉快。
有很多网站教你正确打字。下图描述了基本原理:用同一个指针按所需的键是同一颜色的。黄色键需要用小指按下,蓝色键需要用无名指,绿色键需要用中指,红色键需要用食指。自然,左手按键盘的左侧(从 5
、T
、G
、B
开始向左的键),右手按右侧(从 6
、Y
、H
、N
开始向右的键),拇指负责空格。
您的任务是输出每根手指(拇指除外)正确输入给定字符串的分别按下的次数。
输入格式
仅一行一个字符串 s s s。字符串不包含空格,只包含上面图像中包含的字符。
输出格式
输出必须由八行组成,每行一个整数,表示从左到右观察到的每个手指的按键次数(拇指除外)。
样例 #1
样例输入 #1
AON=BOO;
样例输出 #1
1
0
0
1
1
0
3
2
样例 #2
样例输入 #2
PRINT'NY'[NASLA]
样例输出 #2
2
1
0
2
4
1
1
5
样例 #3
样例输入 #3
VIDI,KO,JE,DOSA
样例输出 #3
1
1
3
1
1
6
2
0
提示说明
数据规模与约定
令 ∣ s ∣ |s| ∣s∣ 表示输入字符串的长度,则对于 100 % 100\% 100% 的数据,有 1 ≤ ∣ s ∣ ≤ 50 1\le |s|\le 50 1≤∣s∣≤50。
代码内容
// #include <iostream>
// #include <algorithm>
// #include <cstring>
// #include <stack>//栈
// #include <deque>//队列
// #include <queue>//堆/优先队列
// #include <map>//映射
// #include <unordered_map>//哈希表
// #include <vector>//容器,存数组的数,表数组的长度
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll ans[9];
map <char,ll> ds;
#define f(a,b) ds[a]=b
int main()
{
//左小指
f('1',1);f('Q',1);f('A',1);f('Z',1);
//左无名指
f('2',2);f('W',2);f('S',2);f('X',2);
//左中指
f('3',3);f('E',3);f('D',3);f('C',3);
//左食指
f('4',4);f('R',4);f('F',4);f('V',4);f('5',4);f('T',4);f('G',4);f('B',4);
//右食指
f('6',5);f('Y',5);f('H',5);f('N',5);f('7',5);f('U',5);f('J',5);f('M',5);
//右中指
f('8',6);f('I',6);f('K',6);f(',',6);
//右无名指
f('9',7);f('O',7);f('L',7);f('.',7);
//右小指
f('0',8);f('-',8);f('=',8);f('P',8);f('[',8);f(']',8);f(';',8);f('\'',8);f('/',8);
string s;
cin>>s;
for(auto c:s)
ans[ds[c]]++;
for(int i=1;i<=8;i++)
cout<<ans[i]<<endl;
return 0;
}