AT1898题解
Cheese_int · · 题解
题目传送门:
AT1898
强调问题:
2022.10.06 : 在 AT 题库里千万别打多余的换行!!
如果你用 scanf 读入字符串的话,会报错,像这样:
scanf ("%s", s);
就会报错,因为 scanf 是 C 语言的,而 string 是 C ++ 的特性。
在考试中 RE 是我们最不想遇到的问题,所以为了我们的分数,我们在考试中读入字符串尽量就 cin 就可以了。如果觉得慢,就用快读优化一下。
还有一个问题:
钢琴中是没有 # Mi 和 # Xi 的,所以打表不要把他们也打进去 。
思路:
读完了这道题,我的第一反应就是 打表,我们只需要把 每一种情况 罗列出来就可以了。看一下表格。
| 字母(起始) | 按键 | 答案(最终) | |
|---|---|---|---|
| 1 | Do | WBWBWBWWBWBW | Fa |
| 2 | #Do | BWBWBWWBWBWW | #Fa |
| 3 | Re | WBWBWWBWBWWB | So |
| 4 | #Re | BWBWWBWBWWBW | #So |
| 5 | Mi | WBWWBWBWWBWB | La |
| 6 | Fa | BWWBWBWWBWBW | #La |
| 7 | #Fa | WWBWBWWBWBWB | Si |
| 8 | So | WBWBWWBWBWBW | Do |
| 9 | #So | BWBWWBWBWBWW | #Do |
| 10 | La | WBWWBWBWBWWB | Re |
| 11 | #La | BWWBWBWBWWBW | #Re |
| 12 | Xi | WWBWBWBWWBWB | Mi |
最后我们只需要按照上面的表格模拟一下就可以了。 我们来看一下代码。
代码:
#include <bits/stdc++.h>
using namespace std;
string s; //c++的好东西
int main () {
cin >> s;
/*按照暴力打表求出此题*/
if (s.substr (0, 12) == "WBWBWWBWBWBW") printf ("Do");
if (s.substr (0, 12) == "BWBWWBWBWBWW") printf ("#Do");
if (s.substr (0, 12) == "WBWWBWBWBWWB") printf ("Re");
if (s.substr (0, 12) == "BWWBWBWBWWBW") printf ("#Re");
if (s.substr (0, 12) == "WWBWBWBWWBWB") printf ("Mi");
if (s.substr (0, 12) == "WBWBWBWWBWBW") printf ("Fa");
if (s.substr (0, 12) == "BWBWBWWBWBWW") printf ("#Fa");
if (s.substr (0, 12) == "WBWBWWBWBWWB") printf ("So");
if (s.substr (0, 12) == "BWBWWBWBWWBW") printf ("#So");
if (s.substr (0, 12) == "WBWWBWBWWBWB") printf ("La");
if (s.substr (0, 12) == "BWWBWBWWBWBW") printf ("#La");
if (s.substr (0, 12) == "WWBWBWWBWBWB") printf ("Si");
return 0;
}
暴力出奇迹。