首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

PAT乙级-1044 火星数字 (20分)

  • 24-02-22 06:40
  • 2673
  • 6715
blog.csdn.net

点击链接PAT乙级-AC全解汇总

题目:
火星人是以 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
  • 1
  • 2
  • 3
  • 4
  • 5

输出样例:

hel mar
may
115
13
  • 1
  • 2
  • 3
  • 4

我的代码:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
//有的时候题目是一起做的,所以会有不需要的头文件

string low[13]={"tret", "jan", "feb", "mar", "apr", "may","jun",
                        "jly", "aug", "sep", "oct", "nov", "dec"};
string high[13]={"000", "tam", "hel", "maa", "huh", "tou", "kes",
                        "hei", "elo", "syy", "lok", "mer", "jou"};

void my1_to_a(string str)
{
    int num=0;
    for(int i=0;i<str.length();i++)
    {
        num=num*10+str[i]-'0';
    }
    int left=num/13;
    int right=num%13;
    //考虑只有高位没有低位的情况,所以拆开输出
    if(left>0)cout<<high[left];
    if(left>0&&right>0)cout<<" ";
    if(right>0||num==0)cout<<low[right];
    cout<<endl;
}


void mya_to_1(string str)
{
    int shi=0,ge=0;
    string left="0",right="0";
    if(str.length()>3)
    {
        right=str.substr(4,3);//low
    }
        left=str.substr(0,3);//high和low都有可能
    for(int i=0;i<13;i++)
    {
        if(left==low[i])ge=i;
        if(right==low[i])ge=i;
        if(left==high[i])shi=i;//不加的话无法识别火星文中13的倍数
    }
    printf("%d\n",shi*13+ge);

}

int main()
{
    int N;
    scanf("%d\n",&N);//记住要有换行符
    for(int i=0;i<N;i++)
    {
        string str;
        getline(cin,str);
        if(str[0]>='0'&&str[0]<='9') my1_to_a(str);
        else mya_to_1(str);
    }
    return 0;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69

注意考虑13倍数的情况,只有高位没有低位

注意考虑数字0的情况

注:本文转载自blog.csdn.net的邂逅模拟卷的文章"https://blog.csdn.net/qq_34451909/article/details/104798826"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top