火星人是以 13 进制计数的:
例如地球人的数字 29 翻译成火星文就是 hel mar;而火星文 elo nov 对应地球数字 115。为了方便交流,请你编写程序实现地球和火星数字之间的互译。
输入第一行给出一个正整数 N(<100),随后 N 行,每行给出一个 [0, 169) 区间内的数字 —— 或者是地球文,或者是火星文。
对应输入的每一行,在一行中输出翻译后的另一种语言的数字。
- 4
- 29
- 5
- elo nov
- tam
- hel mar
- may
- 115
- 13
- #include
- using namespace std;
- string key1[13]={"tret","jan","feb","mar","apr","may","jun","jly","aug","sep","oct","nov","dec"};
- string key2[13]={"tret","tam","hel","maa", "huh", "tou", "kes","hei","elo","syy","lok","mer","jou"};
- int Change(string x,string y){
- int result = 0;
- for(int z=0;z<13;z++) if(x==key2[z]) result+=13*z;
- for(int z=0;z<13;z++) if(y==key1[z]) result+=z;
- for(int z=0;z<13;z++) if(x==key1[z]) result+=z;
- return result;
- }
- int main()
- {
-
- string s;
- int N;
- cin >> N;
- getchar(); // 多余换行
- while(N--){
- getline(cin,s);
- if(isalpha(s[0]))
- {
- string s1="",s2="";
- bool f = false; // 判断单行输入字符串个数
- for(int z=0;z
- if(s[z]==' '){
- f = true;
- continue;
- }
- if(f) s2+=s[z];
- else s1+=s[z];
- }
- cout << Change(s1,s2);
- }
- else
- {
- int result=0;
- for(int z=0;z
10+s[z]-48; - if(result>12) cout << key2[result/13];
- if(result>13 && result%13!=0) cout<<" ";
- if(result<12||result%13!=0) cout<< key1[result%13];
- }
- cout << endl;
- }
- return 0;
- }