1100 Mars Numbers (20 分)
题意
10进制与13进制数的转换。给出一些字符串分别代表0-13和13的1到12倍(即13 26 39…)给你一个十进制数或者这些字符表示的13进制数,写出对应的进制数(给出十进制数写出对应的字符串表示的13进制数,给出字符串表示13进制数则写出对应的十进制数) (数的范围 [0,169)
思路
开始没看懂题,看到后面的范围才反应过来。模拟十进制与13进制的相互转换,再找到对应的字符串即可。唯一麻烦的就是把13进制数与对应字符串的转换,最后提交出了点bug(有两点没过去),换了一种笨方法。因为范围很小,用程序把1-168对应的字符串打印出来存在数组,直接匹配。(直接用程序打印该数组,复制过来)
代码
#include<stdio.h>
#include<string>
#include<iostream>
using namespace std;
int main()
{
string mar1[169]={"tret",
"jan",
"feb",
"mar",
"apr",
"may",
"jun",
"jly",
"aug",
"sep",
"oct",
"nov",
"dec",
"tam",
"tam jan",
"tam feb",
"tam mar",
"tam apr",
"tam may",
"tam jun",
"tam jly",
"tam aug",
"tam sep",
"tam oct",
"tam nov",
"tam dec",
"hel",
"hel jan",
"hel feb",
"hel mar",
"hel apr",
"hel may",
"hel jun",
"hel jly",
"hel aug",
"hel sep",
"hel oct",
"hel nov",
"hel dec",
"maa",
"maa jan",
"maa feb",
"maa mar",
"maa apr",
"maa may",
"maa jun",
"maa jly",
"maa aug",
"maa sep",
"maa oct",
"maa nov",
"maa dec",
"huh",
"huh jan",
"huh feb",
"huh mar",
"huh apr",
"huh may",
"huh jun",
"huh jly",
"huh aug",
"huh sep",
"huh oct",
"huh nov",
"huh dec",
"tou",
"tou jan",
"tou feb",
"tou mar",
"tou apr",
"tou may",
"tou jun",
"tou jly",
"tou aug",
"tou sep",
"tou oct",
"tou nov",
"tou dec",
"kes",
"kes jan",
"kes feb",
"kes mar",
"kes apr",
"kes may",
"kes jun",
"kes jly",
"kes aug",
"kes sep",
"kes oct",
"kes nov",
"kes dec",
"hei",
"hei jan",
"hei feb",
"hei mar",
"hei apr",
"hei may",
"hei jun",
"hei jly",
"hei aug",
"hei sep",
"hei oct",
"hei nov",
"hei dec",
"elo",
"elo jan",
"elo feb",
"elo mar",
"elo apr",
"elo may",
"elo jun",
"elo jly",
"elo aug",
"elo sep",
"elo oct",
"elo nov",
"elo dec",
"syy",
"syy jan",
"syy feb",
"syy mar",
"syy apr",
"syy may",
"syy jun",
"syy jly",
"syy aug",
"syy sep",
"syy oct",
"syy nov",
"syy dec",
"lok",
"lok jan",
"lok feb",
"lok mar",
"lok apr",
"lok may",
"lok jun",
"lok jly",
"lok aug",
"lok sep",
"lok oct",
"lok nov",
"lok dec",
"mer",
"mer jan",
"mer feb",
"mer mar",
"mer apr",
"mer may",
"mer jun",
"mer jly",
"mer aug",
"mer sep",
"mer oct",
"mer nov",
"mer dec",
"jou",
"jou jan",
"jou feb",
"jou mar",
"jou apr",
"jou may",
"jou jun",
"jou jly",
"jou aug",
"jou sep",
"jou oct",
"jou nov",
"jou dec"};
int n,e,sum;
string x;
// for(int i=0;i<169;i++){
// cout<<mar1[i]<<endl;
// }
scanf("%d",&n);
getchar();
while(n--){
getline(cin,x);
// cout<<x<<endl;
if(x[0]>='0'&&x[0]<='9'){
sum=0;
e=1;
for(int i=x.size()-1;i>=0;i--){
sum+=(x[i]-'0')*e;
e*=10;
}
cout<<mar1[sum]<<endl;
}else{
for(int i=0;i<169;i++){
if(x==mar1[i]){
printf("%d\n",i);
break;
}
}
}
}
return 0;
}