作者:王是王小明,仅用来记录自己的学习型经历,转载请表明出处
Actually this coding is not difficult ,the logic is very simple.Because the data volume is small,so the use of the STL’s map directly to establish a mapping table,the query can be directly.Readers need to pay attention to “%d%*c” this,use the “scanf” to intput later when the default “\n” with a newline.
#include <cstdio>
#include <iostream>
#include <string>
#include <map>using namespace std;string unitDigit[13] = {"tret","jan","feb","mar","apr","may","jun","jly","aug","sep","oct","nov","dec"};
string tenDigit[13] = {"tret", "tam", "hel", "maa", "huh", "tou", "kes","hei", "elo", "syy", "lok", "mer", "jou"};
string numToStr[170];
map<string,int> strToNum;void init()
{for(int i=0;i<13;i++){numToStr[i] = unitDigit[i];strToNum[unitDigit[i]] = i;numToStr[i*13] = tenDigit[i];strToNum[tenDigit[i]] = i*13;}for(int i=1;i<13;i++){for(int j=1;j<13;j++){string str = tenDigit[i] + " " + unitDigit[j];numToStr[i*13 + j] = str;strToNum[str] = i * 13 + j; }}
}int main()
{init();int n;scanf("%d%%*c",&n);for(int i=0;i<n;i++){//getchar();string str;getline(cin,str);if(str[0]>='0' && str[0]<='9'){int num = 0;for(int i=0;i<str.length();i++){num = num * 10 + (str[i]-'0');}cout<< numToStr[num]<<endl;}else{cout<< strToNum[str]<<endl;}}return 0;
}