【PAT甲级】1100 Mars Numbers

简介: 【PAT甲级】1100 Mars Numbers

1100 Mars Numbers


People on Mars count their numbers with base 13:


Zero on Earth is called “tret” on Mars.

The numbers 1 to 12 on Earth is called “jan, feb, mar, apr, may, jun, jly, aug, sep, oct, nov, dec” on Mars, respectively.

For the next higher digit, Mars people name the 12 numbers as “tam, hel, maa, huh, tou, kes, hei, elo, syy, lok, mer, jou”, respectively.

For examples, the number 29 on Earth is called “hel mar” on Mars; and “elo nov” on Mars corresponds to 115 on Earth. In order to help communication between people from these two planets, you are supposed to write a program for mutual translation between Earth and Mars number systems.

Input Specification:


Each input file contains one test case. For each case, the first line contains a positive integer N (<100). Then N lines follow, each contains a number in [0, 169), given either in the form of an Earth number, or that of Mars.

Output Specification:

For each number, print in a line the corresponding number in the other language.

Sample Input:

4
29
5
elo nov
tam
• 1
• 2
• 3
• 4
• 5

Sample Output:

hel mar
may
115
13



题意


火星人用 13 进制来计数:


zero(零)在火星读作 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。


我们要做的就是转换火星数字与正常数字。

思路


处理正常数字

如果数字小于 13 ,则直接查找数组输出对应的值。

如果数字大于等于 13 ,则需要将数字划分成高低两位,这里需要注意的是,如果该数能被 13 除尽的话是只输出一个字符串的,例如 13 输出 tam 而不是 tam tret ,当有高位存在时低位如果为 0 则不进行输出。当然如果数字等于 0 的话,直接输出 tret 即可。

处理火星数字

如果给定的数字在高位数组中,则需要将数字转换成对应的正常数字并乘以 13 返回。

如果给定的数字在低位数组中,则直接查询并返回对应的数值即可。


代码

#include<bits/stdc++.h>
using namespace std;
string high[13] = { "","tam", "hel", "maa", "huh", "tou", "kes",
"hei", "elo", "syy", "lok", "mer", "jou" };
string low[13] = { "tret","jan", "feb","mar", "apr", "may",
"jun", "jly", "aug", "sep", "oct", "nov", "dec" };
int get(string str)
{
    //判断是否在高位
    for (int i = 1; i <= 12; i++)
        if (str == high[i])
            return i * 13;
    //判断是否在低位
    for (int i = 0; i <= 12; i++)
        if (str == low[i])
            return i;
}
void change(string num)
{
    if (num[0] >= '0' && num[0] <= '9')    //处理正常数字
    {
        int ans = stoi(num);
        if (ans < 13)  cout << low[ans] << endl;
        else
        {
            cout << high[ans / 13];
            if (ans % 13)   cout << " " << low[ans % 13];
            cout << endl;
        }
    }
    else    //处理火星数字
    {
        stringstream ssin(num);
        string str;
        int ans = 0;
        while (ssin >> str) ans += get(str);
        cout << ans << endl;
    }
}
int main()
{
    int n;
    cin >> n;
    getchar();
    for (int i = 0; i < n; i++)
    {
        string num;
        getline(cin, num);
        change(num);
    }
    return 0;
}


目录
相关文章
|
5月前
|
分布式计算 Hadoop 大数据
Spark 与 Hadoop 的大数据之战:一场惊心动魄的技术较量,决定数据处理的霸权归属!
【8月更文挑战第7天】无论是 Spark 的高效内存计算,还是 Hadoop 的大规模数据存储和处理能力,它们都为大数据的发展做出了重要贡献。
97 2
|
5月前
|
数据采集 算法 数据挖掘
【2023 年第二届钉钉杯大学生大数据挑战赛】 初赛 B:美国纽约公共自行车使用量预测分析 问题一Python代码分析
本文分析了2023年第二届钉钉杯大学生大数据挑战赛初赛B题"美国纽约公共自行车使用量预测分析",重点讨论了问题一的Python代码实现,包括自行车借还网络图的构建、网络密度的计算以及平均最短路径长度和网络直径的分析。
61 0
【2023 年第二届钉钉杯大学生大数据挑战赛】 初赛 B:美国纽约公共自行车使用量预测分析 问题一Python代码分析
|
5月前
|
数据采集 算法 数据挖掘
2023 年第二届钉钉杯大学生大数据挑战赛 初赛 B:美国纽约公共自行车使用量预测分析 问题二Python代码分析
本文提供了2023年第二届钉钉杯大学生大数据挑战赛初赛B题"美国纽约公共自行车使用量预测分析"中问题二的Python代码分析,涉及数据预处理、特征工程、多种聚类算法实现及其结果评估和可视化。
51 0
|
8月前
|
存储 分布式计算 Apache
官宣|Apache Paimon 毕业成为顶级项目,数据湖步入实时新篇章!
Apache Paimon 在构建实时数据湖与流批处理技术领域取得了重大突破,数据湖步入实时新篇章!
3193 6
官宣|Apache Paimon 毕业成为顶级项目,数据湖步入实时新篇章!
|
8月前
|
存储 数据采集 数据可视化
【大数据实训】python石油大数据可视化(八)
【大数据实训】python石油大数据可视化(八)
160 1
|
8月前
|
分布式计算 Hadoop Java
【大数据实训】基于Hadoop的2019年11月至2020年2月宁波天气数据分析(五)
【大数据实训】基于Hadoop的2019年11月至2020年2月宁波天气数据分析(五)
143 1
|
存储 消息中间件 SQL
《Apache Flink 案例集(2022版)》——2.数据分析——蔚来汽车-Apache Flink 在蔚来汽车的应用(下)
《Apache Flink 案例集(2022版)》——2.数据分析——蔚来汽车-Apache Flink 在蔚来汽车的应用(下)
267 0
|
SQL Prometheus 资源调度
《Apache Flink 案例集(2022版)》——2.数据分析——蔚来汽车-Apache Flink 在蔚来汽车的应用(上)
《Apache Flink 案例集(2022版)》——2.数据分析——蔚来汽车-Apache Flink 在蔚来汽车的应用(上)
274 0
|
消息中间件 分布式计算 大数据
【技术er圣诞创意大赏】基于Flink的实时数据平台
【技术er圣诞创意大赏】基于Flink的实时数据平台
149 0
【技术er圣诞创意大赏】基于Flink的实时数据平台
|
机器学习/深度学习 人工智能 自然语言处理
原滴滴AI Labs负责人叶杰平正式加入贝壳找房
滴滴出行原副总裁叶杰平的去向终于尘埃落定。
447 0
原滴滴AI Labs负责人叶杰平正式加入贝壳找房