立志用更少的代码做更高效的表达


Pat乙级最优化代码+题解+分析汇总——>传送门


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


解题思路

题意:让我们设计一个程序,能自由的完成火星文到地球数字的转换。

要注意转换时为13进制。

测试点2和测试点4:

注意读题:
也就是说:只有0能被称为tret(既然单独列出来作为一项规则,说明这个0是特殊的)。

如输入13,则输出tam。 而不是tam tret。


代码展示

#include<bits/stdc++.h>
using namespace std;
//地球文转化为火星文的映射
char a[13]={'0','1','2','3','4','5','6','7','8','9','a','b','c'};
map<char, string>m1, m2;  //火星文转化为地球文的映射
map<string, int>m3;       int b[300];int main() {     m1['0'] = "tret";m1['1'] = "jan"; m1['2'] = "feb"; m1['3'] = "mar"; m1['4'] = "apr";m1['5'] = "may"; m1['6'] = "jun"; m1['7'] = "jly"; m1['8'] = "aug";m1['9'] = "sep"; m1['a'] = "oct"; m1['b'] = "nov"; m1['c'] = "dec";m2['1'] = "tam"; m2['2'] = "hel"; m2['3'] = "maa"; m2['4'] = "huh";m2['5'] = "tou"; m2['6'] = "kes"; m2['7'] = "hei"; m2['8'] = "elo";m2['9'] = "syy"; m2['a'] = "lok"; m2['b'] = "mer"; m2['c'] = "jou";m3["dec"]= 12; m3["jou"]=12*13; m3["nov"]=11; m3["mer"]=11*13;m3["lok"]= 10*13; m3["oct"]=10; m3["syy"]=9*13; m3["sep"]=9;m3["elo"]=8*13; m3["aug"]=8; m3["hei"]=7*13; m3["jly"]=7;m3["kes"]=6*13; m3["jun"]=6; m3["tou"]=5*13; m3["may"]=5;m3["apr"]=4; m3["huh"]=4*13; m3["maa"]=3*13; m3["mar"]=3;m3["hel"]=2*13; m3["feb"]=2; m3["tam"]=1*13; m3["jan"]=1;m3["tret"]=0;int n; cin>>n; getchar();   //吸收空格,记住不要放到循环里 for(int i = 0; i < n; i++) {string s; getline(cin, s);if(isalpha(s[0])) { //如果是字母 stringstream ss;ss << s;string s1,s2;bool flag = false;int num = 0;     //累加和 while(ss >> s1) {num += m3[s1];}cout << num << '\n';} else {            //如果是数字 stringstream ss;    //把字符串转化成整型int x; ss << s; ss >> x;string s1;if(x < 13) {s1 += a[x];cout << m1[s1[0]] << '\n';}else {s1 += a[x/13];x = x % 13;s1 += a[x];cout << m2[s1[0]];if(m1[s1[1]] != "tret") cout << ' ' << m1[s1[1]];cout << '\n'; } }}return 0;
}

博主的碎碎念:

这道题做了一个多小时,如果在正式比赛铁炸了。 主要的难点是测试点2与测试点4, 以及字符串和数字之间的映射问题。 如果单纯用if-else暴力判断,不需要考虑那么多的映射关系, 应该会更简单一些。 毕竟我们是为了拿高分, 又不是为了炫技~

测试点2和测试点4错的来:1044 火星数字 (20分)相关推荐

  1. 【全网最细PAT题解】【PAT乙】1044 火星数字(测试点2,测试点4详细解释)

    题目链接 1044 火星数字 题目描述 火星人是以 13 进制计数的:地球人的 0 被火星人称为 tret. 地球人数字 1 到 12 的火星文分别为:jan, feb, mar, apr, may, ...

  2. 1044 火星数字 (测试点2.4说明)

    火星人是以 13 进制计数的: 地球人的 0 被火星人称为 tret. 地球人数字 1 到 12 的火星文分别为:jan, feb, mar, apr, may, jun, jly, aug, sep ...

  3. 关于团体程序设计天梯赛-练习集 L1-009 N个数求和 (20 分) 以及测试点三过不了的一些想法

    本题的要求很简单,就是求N个数字的和.麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式. 输入格式: 输入第一行给出一个正整数N(≤100).随后一行按格式a1/b1 ...

  4. 【测试点分析】1067 试密码 (20分)_20行代码AC

    立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 当你试图登录某个系统却忘了密码时,系统一般只会允许你尝试有限多次,当超出允许次数时,账号就会被锁死.本题就请你实 ...

  5. 测试点分析:1048 数字加密 (20分)_16行代码AC

    立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 本题要求实现一种数字加密方法.首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位 ...

  6. 1032 挖掘机技术哪家强 (20分) 测试点4

    1032 挖掘机技术哪家强 (20分) 测试点4 为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第 1 行给出不 ...

  7. PAT A1044 火星数字【c语言/测试点2/测试点4】

    火星人是以 13 进制计数的: 地球人的 0 被火星人称为 tret. 地球人数字 1 到 12 的火星文分别为:jan, feb, mar, apr, may, jun, jly, aug, sep ...

  8. 1018 锤子剪刀布 (20分) 测试点五问题

    我真是踩坑大人,阴沟里踩得最准 代码调试运行各种检查一直正常,测试点五死活过不去 最后看了柳神的代码一部分一部分模仿结果!!发现之前的代码出错的原因居然是 统计所有次数的时候我是用的是+=1,柳神用的 ...

  9. 1028 人口普查 (20 分)测试点3格式错误

    1028 人口普查 (20 分) 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超过 2 ...

最新文章

  1. 【CVPR2021】旷视研究院入选学术成果盘点
  2. python每日一类(3):os和sys
  3. arcgis python编程案例-面向ArcGIS的Python脚本编程
  4. ABAP performance学习笔记
  5. Java进阶:图文并茂解析HashMap源码
  6. org.apache.poi 读取数字问题
  7. 0502团队项目 SCRUM团队成立
  8. pta龟兔赛跑Java_PTA-龟兔赛跑
  9. linux和windows的进程的虚拟地址空间
  10. 【HDU - 6447】YJJ's Salesman(降维dp,树状数组优化dp)
  11. Java中大规模集合快速求和计算
  12. 建筑电气工程设计常用图形和文字符号_想要识图无忧?电气工程图图形符号全能图解,电工最爱识图助手...
  13. react-redux-express异步前后端数据交互(面向初学者,高手勿进)
  14. SQL server 數據庫 從SQL2000搬移到SQL2016
  15. between oracle的用法,关于 oracle between and的用法! | 学步园
  16. linux安装intel无线网卡驱动,CentOS 命令行安装intel 2200bg无线网卡驱动
  17. tsx vue3 自定义指令
  18. ros学习——gmapping建图
  19. 吴恩达-目标检测讲解笔记
  20. 【极简教程】Linux Shell 脚本编程

热门文章

  1. python实现 HmacSHA256加密算法
  2. 赠送 12 本 《C++ 服务器开发精髓》
  3. 如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例
  4. 【今晚七点】:对话熊谱翔——开源RTOS与多媒体
  5. 全域调度:云边协同在视频场景下的探索实践
  6. 音视频技术开发周刊 | 149
  7. JSON、Protobuf、Thrift、MessagePack 对比和开发指南
  8. Nginx虚拟目录alias和root目录
  9. web.xml文件报红,怎么解决???
  10. PageHelper分页插件的原理是什么