测试点2和测试点4错的来:1044 火星数字 (20分)
立志用更少的代码做更高效的表达
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分)相关推荐
- 【全网最细PAT题解】【PAT乙】1044 火星数字(测试点2,测试点4详细解释)
题目链接 1044 火星数字 题目描述 火星人是以 13 进制计数的:地球人的 0 被火星人称为 tret. 地球人数字 1 到 12 的火星文分别为:jan, feb, mar, apr, may, ...
- 1044 火星数字 (测试点2.4说明)
火星人是以 13 进制计数的: 地球人的 0 被火星人称为 tret. 地球人数字 1 到 12 的火星文分别为:jan, feb, mar, apr, may, jun, jly, aug, sep ...
- 关于团体程序设计天梯赛-练习集 L1-009 N个数求和 (20 分) 以及测试点三过不了的一些想法
本题的要求很简单,就是求N个数字的和.麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式. 输入格式: 输入第一行给出一个正整数N(≤100).随后一行按格式a1/b1 ...
- 【测试点分析】1067 试密码 (20分)_20行代码AC
立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 当你试图登录某个系统却忘了密码时,系统一般只会允许你尝试有限多次,当超出允许次数时,账号就会被锁死.本题就请你实 ...
- 测试点分析:1048 数字加密 (20分)_16行代码AC
立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 本题要求实现一种数字加密方法.首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位 ...
- 1032 挖掘机技术哪家强 (20分) 测试点4
1032 挖掘机技术哪家强 (20分) 测试点4 为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第 1 行给出不 ...
- PAT A1044 火星数字【c语言/测试点2/测试点4】
火星人是以 13 进制计数的: 地球人的 0 被火星人称为 tret. 地球人数字 1 到 12 的火星文分别为:jan, feb, mar, apr, may, jun, jly, aug, sep ...
- 1018 锤子剪刀布 (20分) 测试点五问题
我真是踩坑大人,阴沟里踩得最准 代码调试运行各种检查一直正常,测试点五死活过不去 最后看了柳神的代码一部分一部分模仿结果!!发现之前的代码出错的原因居然是 统计所有次数的时候我是用的是+=1,柳神用的 ...
- 1028 人口普查 (20 分)测试点3格式错误
1028 人口普查 (20 分) 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超过 2 ...
最新文章
- 【CVPR2021】旷视研究院入选学术成果盘点
- python每日一类(3):os和sys
- arcgis python编程案例-面向ArcGIS的Python脚本编程
- ABAP performance学习笔记
- Java进阶:图文并茂解析HashMap源码
- org.apache.poi 读取数字问题
- 0502团队项目 SCRUM团队成立
- pta龟兔赛跑Java_PTA-龟兔赛跑
- linux和windows的进程的虚拟地址空间
- 【HDU - 6447】YJJ's Salesman(降维dp,树状数组优化dp)
- Java中大规模集合快速求和计算
- 建筑电气工程设计常用图形和文字符号_想要识图无忧?电气工程图图形符号全能图解,电工最爱识图助手...
- react-redux-express异步前后端数据交互(面向初学者,高手勿进)
- SQL server 數據庫 從SQL2000搬移到SQL2016
- between oracle的用法,关于 oracle between and的用法! | 学步园
- linux安装intel无线网卡驱动,CentOS 命令行安装intel 2200bg无线网卡驱动
- tsx vue3 自定义指令
- ros学习——gmapping建图
- 吴恩达-目标检测讲解笔记
- 【极简教程】Linux Shell 脚本编程