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

分析:因为给出的可能是数字(地球文)也有可能是字母(火星文),所以用字符串s保存每一次的输入,因为如果是火星文则会出现空格,所以用getline接收一行的输入~计算string s的长度len,判断s[0]是否是数字,如果是数字,表示是地球文,则需要转为火星文,执行func1();如果不是数字,则说明是火星文,需要转为地球文,执行func2();

func1(int t)中,传入的值是string转int后的结果stoi(s),因为数字最大不超过168,所以最多只会输出两位火星文,如果t / 13不等于0,说明有高位,所以输出b[t/13];如果输出了高位(t/13不等于0)并且t % 13不等于0,说明有高位且有低位,所以此时输出空格;如果t % 13不等于0,说明有低位,此时输出a[t % 13];注意,还有个数字0没有考虑,因为数字0取余13等于0,但是要特别输出tret,所以在func1的最后一句判断中加一句t == 0,并将a[0]位赋值成tret即可解决0的问题~

func2()中,t1和t2一开始都赋值0,s1和s2用来分离火星文单词,因为火星文字符串只可能一个单词或者两个单词,而且一个单词不会超过4,所以先将一个单词的赋值给s1,即s1 = s.substr(0, 3);如果len > 4,就将剩下的一个单词赋值给s2,即s2 = s.substr(4, 3);然后下标j从1到12遍历a和b两个数组,如果a数组中有和s1或者s2相等的,说明低位等于j,则将j赋值给t2;如果b数组中有和s1相等的(b数组不会和s2相等,因为如果有两个单词,s2只可能是低位),说明高位有值,将j赋值给t1,最后输出t1 * 13 + t2即可~

#include <iostream>
#include <string>
using namespace std;
string a[13] = {"tret", "jan", "feb", "mar", "apr", "may", "jun", "jly", "aug", "sep", "oct", "nov", "dec"};
string b[13] = {"####", "tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mer", "jou"};
string s;
int len;
void func1(int t) {if (t / 13) cout << b[t / 13];if ((t / 13) && (t % 13)) cout << " ";if (t % 13 || t == 0) cout << a[t % 13];
}
void func2() {int t1 = 0, t2 = 0;string s1 = s.substr(0, 3), s2;if (len > 4) s2 = s.substr(4, 3);for (int j = 1; j <= 12; j++) {if (s1 == a[j] || s2 == a[j]) t2 = j;if (s1 == b[j]) t1 = j;}cout << t1 * 13 + t2;
}
int main() {int n;cin >> n;getchar();for (int i = 0; i < n; i++) {getline(cin, s);len = s.length();if (s[0] >= '0' && s[0] <= '9')func1(stoi(s));elsefunc2();cout << endl;}return 0;
}

1044. 火星数字(20)-PAT乙级真题相关推荐

  1. 1044. 火星数字(20) PAT

    1044. 火星数字(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 火星人是以13进制计数的: 地球人的 ...

  2. PAT 1074. 宇宙无敌加法器(20)-PAT乙级真题

    地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在PAT星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为"PAT数".每个PAT星人都必须熟记各 ...

  3. 1012. 数字分类 (20)-PAT乙级真题

    给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字: A1 = 能被5整除的数字中所有偶数的和: A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4-: A3 ...

  4. 1019. 数字黑洞 (20)-PAT乙级真题

    给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字.一直重复这样做,我们很快会停在有"数字黑洞&qu ...

  5. PAT 1072. 开学寄语(20)-PAT乙级真题

    1072. 开学寄语(20) 下图是上海某校的新学期开学寄语:天将降大任于斯人也,必先删其微博,卸其QQ,封其电脑,夺其手机,收其ipad,断其wifi,使其百无聊赖,然后,净面.理发.整衣,然后思过 ...

  6. 1064. 朋友数(20)-PAT乙级真题

    1064. 朋友数(20) 如果两个整数各位数字的和是一样的,则被称为是"朋友数",而那个公共的和就是它们的"朋友证号".例如123和51就是朋友数,因为1+2 ...

  7. 1057. 数零壹(20)-PAT乙级真题

    1057. 数零壹(20) 给定一串长度不超过10^5的字符串,本题要求你将其中所有英文字母的序号(字母a-z对应序号1-26,不分大小写)相加,得到整数N,然后再分析一下N的二进制表示中有多少0.多 ...

  8. 1007. 素数对猜想 (20)-PAT乙级真题

    让我们定义 dn 为:dn = pn+1 – pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数."素数对猜想"认为"存在无穷多对相邻且 ...

  9. 1058. 选择题(20)-PAT乙级真题

    批改多选题是比较麻烦的事情,本题就请你写个程序帮助老师批改多选题,并且指出哪道题错的人最多. 输入格式: 输入在第一行给出两个正整数N(<=1000)和M(<=100),分别是学生人数和多 ...

最新文章

  1. 【Python 】单引号和双引号有什么区别?
  2. 【英语学习】【Level 08】U01 Let's Read L4 Hot off the press
  3. MySQL企业级主从复制
  4. qml入门学习(七):单独文件自定义组件
  5. 池与线程池 技术点 目录 1. 线程池作用: 提升性能 1 2. 使用流程 1 3. 线程与线程池的监控 jvisual 1 4. 线程常用方法 2 5. 线程池相关概念 2 5.1. 队列
  6. java正则表达式判断整数_java正则表达式判断数字
  7. 福建师范计算机应用基础作业,福建师范大学《计算机应用基础》在线作业一答案.docx...
  8. pb 系统托盘实例(定时任务管理)
  9. 进行桌面共享软件开发的市场前景如何
  10. Tomcat中的ResourceBundle国际化解析
  11. 自动刷抖音脚本(解放你的双手)
  12. HDU 5745 La Vie en rose(bitset优化dp)
  13. python average函数详解_python基础之函数详解
  14. Java基础 -> 从键盘获取不同的输入类型(String,int,double,boolean)(Scanner)
  15. 中集集团人工智能企业中集飞瞳,拿产品说话的全球航运港口人工智能高科技独角兽,全球第一家完成200万次人工智能集装箱验箱的AI企业
  16. 深入解读 Spark 宽依赖和窄依赖(ShuffleDependency NarrowDependency)
  17. 计算机机房内宜配置灭火器,GB/T 9361-2011_计算机场地安全要求(8页)-原创力文档...
  18. 神武4 电脑版天魔里职业玩法攻略(原创)
  19. 菜学C++ Day57 OJ题目1204 有趣的数字图形I
  20. 在zabbix中实现发送带有图片的邮件和微信告警

热门文章

  1. 125条常见的java面试笔试题大汇总3
  2. 【刘文彬】 Controller:EOS区块链核心控制器
  3. forEach for 循环
  4. 世界互联网大会发布15项领先科技成果
  5. Rancher体系下容器日志采集
  6. LeetCode-9-Palindrome Number
  7. 从零开始写个编译器吧 - tao 语言的文法定义(下)
  8. asp.net MVC留言本示例
  9. Veeam 数据备份解决方案修复多个严重漏洞
  10. Firefox 97.0.2 修复两个已遭利用的0day