1100. Mars Numbers 解析

来源:互联网 发布:uv胶多少钱淘宝 编辑:程序博客网 时间:2024/06/05 20:58

直接用map映射了。感觉程序这样会精简一点。

#include <iostream>#include <map>#include <string>using namespace std;string digit[13] = {"tret", "jan", "feb", "mar", "apr", "may", "jun", "jly", "aug", "sep", "oct", "nov", "dec" } ;string deci[13] = { "tret","tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mer", "jou" } ;map <string, int> str2int;map <int, string> int2str;int n;void Init() {for (int i = 0; i < 13; i++) {str2int[digit[i]] = i;int2str[i] = digit[i];}for (int i = 0; i < 13; i++) {str2int[deci[i]] = i*13;int2str[i * 13] = deci[i];}}void mar2earth(string s) {int sum = 0;string dec, digit;if (s.size() > 3) {//不止一位for (int i = 0; i < 3; i++) {dec.push_back(s[i]);}for (int i = 4; i < s.size(); i++) {digit.push_back(s[i]);}sum = str2int[dec] + str2int[digit];}else {sum = str2int[s];}cout << sum << endl;}void earth2mar(int n) {int dec = n / 13, digit = n % 13;if (digit != 0 && dec != 0) {cout << int2str[dec * 13] << " " << int2str[digit] << endl;}else if (dec != 0 && digit == 0) {cout << int2str[dec * 13] << endl;}elsecout << int2str[digit] << endl;}int string2int(string s) {int sum = 0;for (int i = 0; i < s.size(); i++) {sum *= 10;sum += s[i] - '0';}return sum;}int main() {cin >> n;cin.get();Init();string str;for (int i = 0; i < n; i++) {getline(cin,str);if (str[0] < '0' || str[0] >'9') {mar2earth(str);}else {earth2mar(string2int(str));}}return 0;}


0 0
原创粉丝点击