题目链接:
1044 火星数字
学习了柳神大大的代码,自己写的地球文转火星文的函数,但测试点2和4过不了 下面是自己写的版本,如果有大佬看出错误原因,请指正,非常感谢!
#include<iostream>
#include<string>
using namespace std;
string s;
int len;
string s1[13] = {"tret","jan", "feb", "mar", "apr", "may", "jun", "jly", "aug", "sep", "oct", "nov", "dec"};
string s2[13] = {"####","tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mer", "jou"};
void h2e()
{
int t1 = 0,t2 = 0;
string ss1 = s.substr(0,3),ss2;
if(len > 4) ss2 = s.substr(4,3);
for(int j = 1;j <= 12;j++)
{
if(ss1 == s1[j] || ss2 == s1[j]) t2 = j;
if(ss1 == s2[j]) t1 = j;
}
cout<< t1*13 + t2;
}
void e2h(int t)
{
// if(t / 13) cout<<s2[t / 13];
// if((t / 13) && ( t % 13 )) cout<<" ";
// if(t % 13 || t == 0) cout<<s1[t % 13];
//不明白自己这个版本的e2h为什么错了
int i=0,j=0;
while(num - 13 >= 0)
{
i++;
num -= 13;
}
j = num;
if(i==0) cout<<s1[j];
else cout<<s2[i+1]<<" "<<s1[j];
}
int main()
{
int n;
cin>>n;
getchar();
for(int i=0;i<n;i++)
{
getline(cin,s);
len = s.length();
if(s[0] >= '0' && s[0] <= '9')
e2h(stoi(s));
else
h2e();
cout<<endl;
}
return 0;
}