PAT 1044 火星数字(20)(思路+代码)
1044 火星数字(20)(20 分)
火星人是以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
PS:
代码主要有2个功能:
1、地球数字转火星文
可以将数字转化成13进制的数,然后将每一位作为下标,输出对应字符。
2、火星文转地球数字。
有两种可能,可能有一位或者两位火星文,综合一下,可以第一次取字符串末三位进行匹配,如果字符串长度 比4大,则说明还有一位火星文,再取字符串前三位,进行匹配,最后得到地球数字。
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{string one[13] = { "tret" ,"jan", "feb", "mar","apr","may", "jun", "jly","aug", "sep", "oct", "nov","dec" },two[13] = { "tret","tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mer", "jou" };int n, sum = 0,res;string m;cin >> n;getchar(); //清除缓存(之前的回车键)while (n--) {getline(cin, m);if (isdigit(m[0])) { //地球->火星res = atoi(m.c_str()); if (res/13)cout << two[res/13];if (res / 13 && res % 13)cout << " "<< one[res % 13];if (!(res/13))cout << one[res % 13];cout << endl;}else { //火星->地球for (int i = 0; i < 13; i++) {if (m.substr(m.length() - 3,m.length()) == one[i]) {sum += i;break;} else if (m.substr(m.length() - 3, m.length()) == two[i]) {sum += (i*13);break;}}if (m.length() > 4) {for (int i = 0; i < 13; i++) {if (m.substr(0, 3) == two[i]) {sum += i * 13;break;}}}cout << sum << endl;sum = 0;}}return 0;
}
转载于:https://www.cnblogs.com/F-itachi/p/9974442.html
PAT 1044 火星数字(20)(思路+代码)相关推荐
- 【PAT乙】1044 火星数字 (20分)
1044 火星数字 (20分) 火星人是以 13 进制计数的: 地球人的 0 被火星人称为 tret. 地球人数字 1 到 12 的火星文分别为:jan, feb, mar, apr, may, ju ...
- PAT乙级 1044 火星数字 (20分)
1044 火星数字 (20分) 火星人是以 13 进制计数的: 地球人的 0 被火星人称为 tret. 地球人数字 1 到 12 的火星文分别为:jan, feb, mar, apr, may, ju ...
- 1044. 火星数字(20) PAT
1044. 火星数字(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 火星人是以13进制计数的: 地球人的 ...
- 1044. 火星数字(20)
1044. 火星数字(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 火星人是以13进制计数的: 地球人的 ...
- PAT 1044. 火星数字
PAT 1044. 火星数字 火星人是以13进制计数的: 地球人的0被火星人称为tret. 地球人数字1到12的火星文分别为:jan, feb, mar, apr, may, jun, jly, au ...
- PAT --- 1044.火星数字 (20 分)
1044 火星数字 (20 分) 火星人是以 13 进制计数的: 地球人的 0 被火星人称为 tret. 地球人数字 1 到 12 的火星文分别为:jan, feb, mar, apr, may, j ...
- PAT 乙级 1044. 火星数字(20) Java版
火星人是以13进制计数的: 地球人的0被火星人称为tret. 地球人数字1到12的火星文分别为:jan, feb, mar, apr, may, jun, jly, aug, sep, oct, no ...
- 1044. 火星数字(20)-PAT乙级真题
火星人是以13进制计数的:地球人的0被火星人称为tret.地球人数字1到12的火星文分别为:jan, feb, mar, apr, may, jun, jly, aug, sep, oct, nov, ...
- 测试点2和测试点4错的来:1044 火星数字 (20分)
立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 火星人是以 13 进制计数的: 地球人的 0 被火星人称为 tret. 地球人数字 1 到 12 的火星文分别为 ...
- 1044 火星数字 (20 分)(c++)
火星人是以 13 进制计数的: 地球人的 0 被火星人称为 tret. 地球人数字 1 到 12 的火星文分别为:jan, feb, mar, apr, may, jun, jly, aug, sep ...
最新文章
- rabbitmq利用死信队列+TTL 实现延迟队列
- MyBatis之级联——一对一关系
- sqlserver 性能问题
- FireWork 制作android 应用程序 icon
- linux——编写Shell脚本常用命令:diff、patch、cut、sort、uniq、、||、test、tr
- Chrome浏览器和百度搜索引擎兼容度不佳
- 解决 The 'InnoDB' feature is disabled; you need MySQL built with 'InnoDB' to have it working
- springboot日志配输出路径配置_Spring Boot 日志配置方法(超详细)
- utu2440 vxWorks DM9000A驱动移植
- java 解锁关闭文件占用_程序员:Java文件锁定、解锁和其它NIO操作
- python数据拟合
- EF BB BF的问题
- 机器学习: 最大似然估计 (MLE) 最大后验概率(MAP)
- 带通滤波器中心频率计算公式中R是哪个值_手把手教系列之IIR数字滤波器设计实现...
- OpenSSL自建CA和颁发SSL证书
- 使用SVG.Net生成svg格式文字图片
- IDEA配置JPBC
- 理想电流源与理想电压源
- C语言例题:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
- Java输出字符串出现次数最多的字母
热门文章
- MySQL数据库基础(三)——SQL语言
- Emacs Lisp 15 分钟入门
- oracle显示一个月的所有天数
- Unix的***追踪
- ul在Firefox和IE下的不同表现
- C/C++使用strcpy报错解决方案
- js des加密 java_java端采用DES/CBC/PKCS5Padding 加密,js解密不了。google搜了好多方法没能解决...
- 组件三层_Java三层架构原理与作用小结
- C语言实验六作业,C语言程序设计作业——实验六.doc
- 在mybatis里面设置不同数据库运行环境和适应性问题