CF94A Restoring Password 题解

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;
}
上一篇:.net 6.0 identity实现


下一篇:Unable to load authentication plugin ‘caching_sha2_password‘