PKU 百炼OJ 简单密码

http://bailian.openjudge.cn/practice/2767/

#include<iostream>
#include <cmath>
#include <math.h>
#include <vector>
#include <algorithm>
#include <map>
#include <string>
//#include <string.h>
#include <unordered_map>

int main()
{
	std::map<int, char> m;
	std::unordered_map<char, int> um;
	for (int i = 0; i < 26; i++)
	{
		m.emplace(i, 'A' + i);
		um.emplace('A' + i, i);
	}
	/*for (auto temp : um)
	{
		std::cout << temp.first << " " << temp.second << std::endl;
	}*/
	std::string input;
	//cin会捕捉空格
	//std::cin >> input;
	getline(std::cin, input);
	for (int i = 0; i < input.size(); i++)
	{
		auto umit = um.find(input[i]);
		if (umit != um.end())
		{
			int num = (*umit).second;
			//加上26防止-号
			int correct = (num - 5 + 26) % 26;
			std::cout << m[correct];
		}
		else
		{
			std::cout << input[i];
		}
	}
}

  

原文地址:https://www.cnblogs.com/tangmiao/p/10201695.html