Content
有一个 \(80\) 位的 \(01\) 字符串,由 \(8\) 个长度为 \(10\) 的 \(01\) 字符串组成,每个小字符串分别对应一个数字。现在,给出这个字符串和 \(0\) ~ \(9\) 分别对应的 \(01\) 字符串,请你破解出这个字符串对应的数字。
Solution
这么好的题目为什么不用 \(\texttt{map}\) 呢……
分别将 \(0\) ~ \(9\) 的字符串分别映射到对应的数字,然后看每 \(10\) 位字符串分别对应那些数字,就可以直接用 \(\texttt{map}\) 映射出来了。
Code
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <iostream>
#include <map>
using namespace std;
string s[17];
map<string, int> num;
int main() {
for(int i = 0; i <= 10; ++i) {
cin >> s[i];
if(i) num[s[i]] = i - 1;
}
int len = s[0].size();
for(int i = 0; i < len; i += 10) {
string tmp = "";
for(int j = 0; j < 10; ++j)
tmp += s[0][i + j];
printf("%d", num[tmp]);
}
return 0;
}