zoukankan      html  css  js  c++  java
  • PAT乙级1044

    火星人是以 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
    
     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<string.h>
     4 #include<algorithm>
     5 #include<cmath>
     6 #include<vector>
     7 #include<queue>
     8 using namespace std;
     9 string a[13]={"tret","jan","feb","mar","apr","may","jun","jly","aug","sep","oct","nov","dec"};
    10 string b[12]={"tam","hel","maa","huh","tou","kes","hei","elo","syy","lok","mer","jou"};
    11 int n;
    12 string ans;
    13 bool f;
    14 void numchange(string ans)
    15 {
    16     int length=ans.length();
    17     int total=0;
    18     for(int i=0;i<length;i++) {
    19         total = total + (ans[i]-'0') * pow(10.0, length - i - 1);
    20     }
    21     int one=total/13;
    22     int two=total%13;
    23     if(two==0&&one==0)
    24         cout<<a[0]<<endl;
    25     else if(one==0)
    26         cout<<a[two]<<endl;
    27     else if(two==0)
    28         cout<<b[one-1]<<endl;
    29     else
    30         cout<<b[one-1]<<" "<<a[two]<<endl;
    31 }
    32 void strchange(string ans)
    33 {
    34   int length=ans.length();
    35   //cout<<length<<" ";
    36   int sum=0;
    37   if(length==3){
    38       for(int i=0;i<13;i++){
    39           if(ans==a[i])
    40           {
    41               sum=i;
    42               //cout<<1<<" "<<i<<endl;
    43               break;
    44           }
    45       }
    46       for(int i=0;i<12;i++){
    47           if(ans==b[i])
    48           {
    49               sum=(i+1)*13;
    50 
    51               break;
    52           }
    53       }
    54   }
    55   else
    56   {
    57       string s,g;
    58       for(int i=0;i<3;i++){
    59           s+=ans[i];
    60       }
    61       for(int i=4;i<7;i++)
    62           g+=ans[i];
    63 
    64       for(int i=0;i<12;i++){
    65           if(s==b[i]){
    66               sum+=(i+1)*13;
    67               break;
    68           }
    69       }
    70       for(int i=0;i<13;i++){
    71           if(g==a[i]){
    72               sum+=i;
    73               break;
    74           }
    75       }
    76   }
    77   cout<<sum<<endl;
    78 }
    79 int main()
    80 {
    81 
    82     cin>>n;
    83     getchar();
    84     for(int i=0;i<n;i++){
    85         getline(cin,ans);
    86         if(ans[0]>='0'&&ans[0]<='9')
    87             f=1;
    88         else
    89             f=0;
    90         if(f)
    91         numchange(ans);
    92         else
    93             strchange(ans);
    94     }
    95     return 0;
    96 }
  • 相关阅读:
    正则表达式进阶——你从没想过的正则表达式使用方式
    bert 预训练模型路径
    Ubuntu 18.04 美化
    循环中存在异步的情况
    SQL truncate 、delete与drop区别
    用express创建网站出现"$ DEBUG=microbog ./bin/www"的提示
    全局安装了express框架,但是无法使用express指令的问题
    jQuery获取textarea中的文本
    js实现查询关键词,使其高亮
    SQL Server常用函数汇总
  • 原文地址:https://www.cnblogs.com/zuiaimiusi/p/11348409.html
Copyright © 2011-2022 走看看