PAT (Advanced Level) Practise 1112 Stucked Keyboard (20)
2017-06-08 20:39
423 查看
1112. Stucked Keyboard (20)
时间限制400 ms
内存限制
65536 kB
代码长度限制
16000 B
判题程序
Standard
作者
CHEN, Yue
On a broken keyboard, some of the keys are always stucked. So when you type some sentences, the characters corresponding to those keys will appear repeatedly on screen for k times.
Now given a resulting string on screen, you are supposed to list all the possible stucked keys, and the original string.
Notice that there might be some characters that are typed repeatedly. The stucked key will always repeat output for a fixed k times whenever it is pressed. For example, when k=3, from the string "thiiis iiisss a teeeeeest" we know that the keys "i" and "e"
might be stucked, but "s" is not even though it appears repeatedly sometimes. The original string could be "this isss a teest".
Input Specification:
Each input file contains one test case. For each case, the 1st line gives a positive integer k ( 1<k<=100 ) which is the output repeating times of a stucked key. The 2nd line contains the resulting string on screen, which consists of no more than 1000 characters
from {a-z}, {0-9} and "_". It is guaranteed that the string is non-empty.
Output Specification:
For each test case, print in one line the possible stucked keys, in the order of being detected. Make sure that each key is printed once only. Then in the next line print the original string. It is guaranteed that there is at least one stucked key.
Sample Input:
3 caseee1__thiiis_iiisss_a_teeeeeest
Sample Output:
ei case1__this_isss_a_teest
题意:给你一个k和一个字符串,若键盘的某个键坏了,那么打一个字符它会出现k次,输出哪些键坏了,并且输出原字符串
#include <iostream> #include <cstdio> #include <cstring> #include <string> #include <algorithm> #include <cmath> #include <map> #include <set> #include <stack> #include <queue> #include <vector> #include <bitset> #include <functional> using namespace std; #define LL long long const int INF = 0x3f3f3f3f; char ch[100005]; int k,visit[500]; int main() { while (~scanf("%d%s", &k, ch)) { memset(visit, 0, sizeof visit); for (int i = 0; ch[i]; i++) { int cnt = 1; while (ch[i] == ch[i + 1]&&cnt<k) i++,cnt++; if (cnt < k) visit[ch[i]]=1; } for (int i = 0;ch[i]; i++) if (!visit[ch[i]]) printf("%c", ch[i]),visit[ch[i]]=2; printf("\n"); for (int i = 0; ch[i]; i++) { printf("%c", ch[i]); if (visit[ch[i]]==2) i = i + k-1; } printf("\n"); } return 0; }
相关文章推荐
- PAT (Advanced Level) Practise 1112 Stucked Keyboard (20)
- PAT (Advanced Level) Practise 1008. Elevator (20)
- PAT (Advanced Level) Practise 1001. A+B Format (20)
- PAT (Advanced Level) Practise 1015 Reversible Primes (20)
- PAT (Advanced Level) Practise 1081 Rational Sum(20)
- PAT (Advanced Level) Practise 1077 Kuchiguse (20)
- PAT (Advanced Level) Practise 1116 Come on! Let's C (20)
- PAT (Advanced Level) Practise 1019. General Palindromic Number (20)
- PAT (Advanced Level) Practise 1054 The Dominant Color (20)
- PAT (Advanced Level) Practise 1096 Consecutive Factors (20)
- PAT (Advanced Level) Practise 1019 General Palindromic Number (20)
- PAT (Advanced Level) Practise 1120 Friend Numbers (20)
- PAT (Advanced Level) Practise 1011. World Cup Betting (20)
- PAT (Advanced Level) Practise 1008 Elevator (20)
- PAT (Advanced Level) Practise 1104 Sum of Number Segments (20)
- 1015. Reversible Primes (20) ——PAT (Advanced Level) Practise
- PAT (Advanced Level) Practise 1054 The Dominant Color (20)
- PAT (Advanced Level) Practise 1088 Rational Arithmetic (20)
- PAT (Advanced Level) Practise 1042 Shuffling Machine (20)
- PAT (Advanced Level) Practise 1041 Be Unique (20)