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; }
相关文章推荐
- MySQL的常见SQL语句范例
- Swift代码实现加载WEBVIEW
- C++中getline被跳过
- Android基础学习之navigate(导航)
- 乱记-2
- .9.png 转载地址http://www.cnblogs.com/lwbqqyumidi/p/3373070.html
- TCP/UDP编程
- POJ 2778 DNA Sequence (AC自动机+矩阵快速幂)
- C语言求解素数(质数)的优化:打印100-200之间的素数
- 【小游戏】C++手工制作贪吃蛇
- 【小游戏】C++手工制作贪吃蛇
- iOS-Core-Animation-Advanced-Techniques(四-5)
- Android--PullToRefreshListView的使用
- ubuntu 14.04安装quickbuild buildagent (二)
- 面试总结
- [二进制位运算状态 隐式图搜索]UVa658 - It's not a Bug, it's a Feature!
- css之line-height
- 第二天-输入(scanf)输出(printf)函数
- 使用MAVEN搭建Haoop开发环境
- 面向对象——内部类