Sample Input:
4
29
5
elo nov
tam
Sample Output:
hel mar
may
115
13
题解:
用map将字符串与文字进行对应,视情况输出
#include <iostream>
#include <string.h>
#include <string>
#include <unordered_map>
using namespace std;
string base_digit[13] = {"tret","jan", "feb", "mar", "apr", "may", "jun", "jly","aug", "sep", "oct", "nov","dec"};
string higher_digit[13] = {"tret","tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mer", "jou"};
unordered_map<string,int> base_mp;
unordered_map<string,int> higher_mp;
void marvs2(string higher,string base){
int h=0;
int b=0;
h = higher_mp[higher];
b = base_mp[base];
int ans = h*13 + b;
cout << ans << endl;
}
void num2(int num){
if(num / 13) cout << higher_digit[num/13];
if(num /13 && num %13) cout << " ";
if(num %13 || num ==0) cout << base_digit[num%13];
cout << endl;
}
int main(){
for(int i=0;i<13;i++){
base_mp[base_digit[i]] = i;
higher_mp[higher_digit[i]] = i;
}
char a[50],b[50];
string higher,base;
int num,h_d,b_d;
int n,temp;
cin >> n;
getchar();
for(int i=0;i<n;i++){
getline(cin,higher);
if(!(higher[0] >='0' && higher[0] <='9')){
if(higher.find(" ")==-1){
base = higher;
higher = higher;
}
else{
base = higher.substr(4,-1);
higher = higher.substr(0,3);
}
marvs2(higher,base);
}
else{
num = stoi(higher);
num2(num);
}
}
system("pause");
return 0;
}