自己运行无错误,但提交过不了,想知道错误在哪里
原题地址
#include
using namespace std;
string l[13] = {"tret", "jan", "feb", "mar", "apr", "may", "jun", "jly", "aug", "sep", "oct", "nov", "dec"}; //低位
string h[12] = {"tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mer", "jou"}; //高位
void EToM(int num){ //地球数字 --> 火星数字
int a[2];
a[1] = num%13; //个位
a[0] = (num/13)%13; //十位
if(a[0] == 0) cout << l[a[1]] << endl; //0-12
else if(a[1] == 0 && a[0] != 0) cout << h[a[0]-1] << endl; //13的倍数
else cout << h[a[0]-1] << " " << l[a[1]] << endl;
}
int MToE(string s){ //火星数字 --> 地球数字
int t;
for(int i = 0; i < 12; i ++)
if(s == h[i]) return (i+1)*13; //高位,则乘以13^1
for(int i = 0; i < 13; i ++)
if(s == l[i]) return i; //低位,则乘以13^0
}
int main()
{
int n;
cin >> n;
getchar(); //使用getline时会将第一次cin>>N的时候回车记录在内,从而少一次循环所以用getchar()捕捉那个回车
for(int i = 0; i < n; i ++){
string s;
getline(cin, s);
if(s[0] >= '0' && s[0] <= '9'){ //输入为地球数字,即数字
int num = 0;
for(int j = 0; j < s.size(); j ++)
num = num*10 + (s[j]-'0');
EToM(num);
}
else{ //输入为火星数字,即字符串
string s1, s2;
int num1 = 0, num2 = 0;
for(int j = 0; j < 3; j ++) s1+= s[j]; num1 = MToE(s1);
for(int j = 4; j < s.size(); j++) s2+= s[j]; num2 = MToE(s2);
cout << num1+num2 << endl;
}
}
return 0;
}