解题代码
#include<iostream>
#include<string>
#include<cctype>
using namespace std;
string a[13] = { "tret","jan","feb","mar","apr","may","jun","jly","aug","sep","oct","nov","dec" };
string b[13] = { "####","tam","hel","maa","huh","tou","kes","hei","elo","syy","lok","mer","jou" };
void func1(int x) {
if (x / 13) cout << b[x / 13];
if (x / 13 && x % 13) cout << " ";
if (x % 13 || x == 0) cout << a[x % 13];
}
void func2(string x) {
int a1 = 0, a2 = 0;
string s1 = x.substr(0, 3), s2;
if (x.length() > 4) s2 = x.substr(4, 3);
for (int i = 1; i < 13; i++) {
if (b[i] == s1) a1 = i;
if (a[i] == s2 || a[i]== s1) a2 = i;
}
cout << 13 * a1 + a2;
}
int main() {
int n;
cin >> n;
getchar();
for (int i = 0; i < n; i++) {
string str;
getline(cin, str);
if (i) printf("\n");
if (isdigit(str[0])) func1(stoi(str));
else func2(str);
}
return 0;
}
测试结果
问题整理
1.注意题目如果输入的是火星文,则第一个有可能是进位的数也有可能是没有进位的数。