您的位置:首页 > 其它

1044. 火星数字(20)

2015-09-23 23:28 246 查看



时间限制

400 ms

内存限制

65536 kB

代码长度限制

8000 B

判题程序

Standard

作者

CHEN, Yue

火星人是以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

#include <stdio.h>
#include <string.h>
#define MAX 109

void Input(int n,char string[][10]);
void Judge(int n,char string[][10]);
int Change1(int m,int x,char string[][10]);
int Change2(int m,int x,char string[][10]);

int i;
char Gewei[13][5]={"tret","jan","feb","mar","apr","may","jun","jly","aug","sep","oct","nov","dec"};
char Shiwei[12][5]={"tam","hel","maa","huh","tou","kes","hei","elo","syy","lok","mer","jou"};

int main()
{
int N;
while(scanf("%d\n",&N)!=EOF)
{
char String[MAX][10];
Input(N,String);
Judge(N,String);
}
return 0;
}

void Input(int n,char string[][10])
{
for(i=0;i<n;i++)
{
gets(string[i]);
}
}

void Judge(int n,char string[][10])
{
int M;
for(i=0;i<n;i++)
{
M=strlen(string[i]);
if(string[i][0]<='9')
{
Change1(M,i,string);
}
else
{
Change2(M,i,string);
}
}
}

int Change1(int m,int x,char string[][10])
{
int Num,Num1,Num2;
if(1==m)
{
Num=string[i][0]-48;
printf("%s\n",Gewei[Num]);
}
if(2==m)
{
Num=(string[i][0]-48)*10+(string[i][1]-48);
Num1=Num%13;
Num2=Num/13;
if(0==Num1)
{
printf("%s\n",Shiwei[Num2-1]);
}
else if(0==Num2)
{
printf("%s\n",Gewei[Num1]);
}
else
{
printf("%s %s\n",Shiwei[Num2-1],Gewei[Num1]);
}
}
if(3==m)
{
Num=(string[i][0]-48)*100+(string[i][1]-48)*10+(string[i][2]-48);
Num1=Num%13;
Num2=Num/13;
if(0==Num1)
{
printf("%s\n",Shiwei[Num2-1]);
}
else
{
printf("%s %s\n",Shiwei[Num2-1],Gewei[Num1]);
}
}
return 0;
}

int Change2(int m,int x,char string[][10])
{
int j=0;
if(m>4)
{
int Num;
for(j=0;j<12;j++)
{
if((string[x][0]==Shiwei[j][0])&&(string[x][1]==Shiwei[j][1])&&(string[x][2]==Shiwei[j][2]))
{
Num=(j+1)*13;
break;
}
}
int k;
for(j=0;j<13;j++)
{
for(k=4;k<8;k++)
{
if(Gewei[j][k-4]!=string[x][k])
{
break;
}
}
if(k>=8)
{
Num=Num+j;
}
}
printf("%d\n",Num);
}
else
{
for(j=0;j<13;j++)
{
if(0==strcmp(string[x],Gewei[j]))
{
printf("%d\n",j);
break;
}
}
if(j>=13)
{
for(j=0;j<12;j++)
{
if(0==strcmp(string[x],Shiwei[j]))
{
printf("%d\n",(j+1)*13);
break;
}
}
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: