zoukankan      html  css  js  c++  java
  • PAT Basic 1044 火星数字 (20 分)

    火星人是以 13 进制计数的:
    
    地球人的 0 被火星人称为 tret。
    地球人数字 112 的火星文分别为: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
    #include <iostream>
    #include <sstream>
    #include <cctype>
    #include <cmath>
    #include <vector>
    using namespace std;
    int main()
    {
        string s;int num;
        string ge[]={"tret","jan","feb","mar","apr","may","jun","jly","aug","sep","oct","nov","dec"};
        string shi[]={"","tam","hel","maa","huh","tou","kes","hei","elo","syy","lok","mer","jou"};
        cin>>num;getline(cin,s);
        while(num--){
            getline(cin,s);
            stringstream ss;
            if(isdigit(s[0])){
                int digit;
                ss<<s;
                ss>>digit;
                string res="";
                int geDi=digit%13;
                int shDi=digit/13;
                bool hasPrintShi=false;
                if(shDi!=0) {
                    res+=shi[shDi];
                    res+=" ";
                    hasPrintShi=true;
                }
                if(!(hasPrintShi&&geDi==0)) {
                    res+=ge[geDi];
                    res+=" ";
                }
                cout<<res.substr(0,res.length()-1)<<endl;
            }else{
                ss<<s;
                string tmp;
                vector<string> vec;
                while(ss>>tmp) vec.push_back(tmp);
                int a=0;
                while(vec.size()!=0){
                    for(int i=0;i<13;i++){
                        if(shi[i]==vec[0]){
                            a=i*13;
                            vec.erase(vec.begin());
                            break;
                        }
                        if(ge[i]==vec[0]){
                            a+=i;
                            vec.erase(vec.begin());
                            break;
                        }
                    }
                }
                cout<<a<<endl;
            }
        }
        system("pause");
        return 0;
    }
  • 相关阅读:
    Start Developing iOS Apps (Swift) 开始开发iOS应用(Swift)
    ansible copy file
    多个sshkey 指定key来clone仓库
    elastic search 日期为string类型导致视图无法展示时间的解决办法
    ubuntu 安装php 报错解决
    ruby hash 默认值的问题
    11.Mysql 之MHA(高可用)
    10. 主从复制-主从复制(基于GTID)--附加半同步复制
    9 .mysql的备份与恢复
    11.Mysql之回表、最左匹配、索引下推
  • 原文地址:https://www.cnblogs.com/littlepage/p/11427474.html
Copyright © 2011-2022 走看看