火星人是以 13 进制计数的:
地球人的 0 被火星人称为 tret。
地球人数字 1 到 12 的火星文分别为:jan, feb, mar, apr, may, jun, jly, aug, sep, oct, nov, dec。
火星人将进位以后的 12 个高位数字分别称为:tam, hel, maa, huh, tou, kes, hei, elo, syy, lok, mer, jou。
例如地球人的数字 29 翻译成火星文就是 hel mar;而火星文 elo nov 对应地球数字 115。为了方便交流,请你编写程序实现地球和火星数字之间的互译。
输入格式:
输入第一行给出一个正整数 N(<100),随后 N 行,每行给出一个 [0, 169) 区间内的数字 —— 或者是地球文,或者是火星文。
输出格式:
对应输入的每一行,在一行中输出翻译后的另一种语言的数字。
输入样例:
4
29
5
elo nov
tam
输出样例:
hel mar
may
115
13
题解:
特别注意几种情况:0的火星文要输出tret,13的倍数的火星文是一个3位,判断输入的是地球文还是火星文,由7位组成的火星文输入时要分开处理。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int n,i,x,y,a,b,m,j,k;
char s[10],s1[4],s2[4];
scanf("%d",&n);
getchar();
while(n--)
{
memset(s1,0,sizeof(s1));
memset(s2,0,sizeof(s2));
gets(s);
m=strlen(s);
x=0;
y=0;
if(s[0]>='0'&&s[0]<='9')
{
for(i=0; i<m; i++)
x=x*10+s[i]-'0';
if(x==0)printf("tret\n");
else
{
a=x/13;
b=x%13;
if(b!=0)
{
if(a==1)printf("tam ");
else if(a==2)printf("hel ");
else if(a==3)printf("maa ");
else if(a==4)printf("huh ");
else if(a==5)printf("tou ");
else if(a==6)printf("kes ");
else if(a==7)printf("hei ");
else if(a==8)printf("elo ");
else if(a==9)printf("syy ");
else if(a==10)printf("lok ");
else if(a==11)printf("mer ");
else if(a==12)printf("jou ");
if(b==1)printf("jan\n");
else if(b==2)printf("feb\n");
else if(b==3)printf("mar\n");
else if(b==4)printf("apr\n");
else if(b==5)printf("may\n");
else if(b==6)printf("jun\n");
else if(b==7)printf("jly\n");
else if(b==8)printf("aug\n");
else if(b==9)printf("sep\n");
else if(b==10)printf("oct\n");
else if(b==11)printf("nov\n");
else if(b==12)printf("dec\n");
}
else if(b==0)
{
if(a==1)printf("tam\n");
else if(a==2)printf("hel\n");
else if(a==3)printf("maa\n");
else if(a==4)printf("huh\n");
else if(a==5)printf("tou\n");
else if(a==6)printf("kes\n");
else if(a==7)printf("hei\n");
else if(a==8)printf("elo\n");
else if(a==9)printf("syy\n");
else if(a==10)printf("lok\n");
else if(a==11)printf("mer\n");
else if(a==12)printf("jou\n");
}
}
}
else if(m==3)
{
if(strcmp(s,"tret")==0)printf("0\n");
else if(strcmp(s,"jan")==0)printf("1\n");
else if(strcmp(s,"feb")==0)printf("2\n");
else if(strcmp(s,"mar")==0)printf("3\n");
else if(strcmp(s,"apr")==0)printf("4\n");
else if(strcmp(s,"may")==0)printf("5\n");
else if(strcmp(s,"jun")==0)printf("6\n");
else if(strcmp(s,"jly")==0)printf("7\n");
else if(strcmp(s,"aug")==0)printf("8\n");
else if(strcmp(s,"sep")==0)printf("9\n");
else if(strcmp(s,"oct")==0)printf("10\n");
else if(strcmp(s,"nov")==0)printf("11\n");
else if(strcmp(s,"dec")==0)printf("12\n");
else if(strcmp(s,"tam")==0)
{
y=13;
printf("%d\n",y);
}
else if(strcmp(s,"hel")==0)
{
y=13*2;
printf("%d\n",y);
}
else if(strcmp(s,"maa")==0)
{
y=13*3;
printf("%d\n",y);
}
else if(strcmp(s,"huh")==0)
{
y=13*4;
printf("%d\n",y);
}
else if(strcmp(s,"tou")==0)
{
y=13*5;
printf("%d\n",y);
}
else if(strcmp(s,"kes")==0)
{
y=13*6;
printf("%d\n",y);
}
else if(strcmp(s,"hei")==0)
{
y=13*7;
printf("%d\n",y);
}
else if(strcmp(s,"elo")==0)
{
y=13*8;
printf("%d\n",y);
}
else if(strcmp(s,"syy")==0)
{
y=13*9;
printf("%d\n",y);
}
else if(strcmp(s,"lok")==0)
{
y=13*10;
printf("%d\n",y);
}
else if(strcmp(s,"mer")==0)
{
y=13*11;
printf("%d\n",y);
}
else if(strcmp(s,"jou")==0)
{
y=13*12;
printf("%d\n",y);
}
}
else
{
for(i=0; i<m; i++)
{
if(s[i]==' ')j=i;
}
for(i=0; i<j; i++)
{
s1[i]=s[i];
}
k=0;
for(i=j+1; i<m; i++)
{
s2[k++]=s[i];
}
if(strcmp(s1,"tam")==0)y=13;
if(strcmp(s1,"hel")==0)y=13*2;
if(strcmp(s1,"maa")==0)y=13*3;
if(strcmp(s1,"huh")==0)y=13*4;
if(strcmp(s1,"tou")==0)y=13*5;
if(strcmp(s1,"kes")==0)y=13*6;
if(strcmp(s1,"hei")==0)y=13*7;
if(strcmp(s1,"elo")==0)y=13*8;
if(strcmp(s1,"syy")==0)y=13*9;
if(strcmp(s1,"lok")==0)y=13*10;
if(strcmp(s1,"mer")==0)y=13*11;
if(strcmp(s1,"jou")==0)y=13*12;
if(strcmp(s2,"tret")==0)y=y;
if(strcmp(s2,"jan")==0)y=y+1;
if(strcmp(s2,"feb")==0)y=y+2;
if(strcmp(s2,"mar")==0)y=y+3;
if(strcmp(s2,"apr")==0)y=y+4;
if(strcmp(s2,"may")==0)y=y+5;
if(strcmp(s2,"jun")==0)y=y+6;
if(strcmp(s2,"jly")==0)y=y+7;
if(strcmp(s2,"aug")==0)y=y+8;
if(strcmp(s2,"sep")==0)y=y+9;
if(strcmp(s2,"oct")==0)y=y+10;
if(strcmp(s2,"nov")==0)y=y+11;
if(strcmp(s2,"dec")==0)y=y+12;
printf("%d\n",y);
}
}
return 0;
}