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

思路:

题目不难,我用switch-case做就显得冗长,但是好理解,用c[0]判断是数字还是字符,然后分别判断

代码:

package main

import (
    "bufio"
    "fmt"
    "os"
    "strconv"
    "strings"
)

func main()  {
    var n,result int
    fmt.Scan(&n)
    r:=bufio.NewReader(os.Stdin)
    for i:=0;i<n;i++{
        c,_:=r.ReadString('\n')
        //如果是数字,就转换成字母
        if c[0] >='0'&&c[0]<='9'{
            //把c最后换行符取消掉
            c=strings.Replace(c,"\n","",-1)
            num,_ :=strconv.Atoi(c)
            //如果可以用13整除
            if num % 13==0{
                switch (num/13) {
                case 0:
                    fmt.Printf("tret\n")
                case 1:
                    fmt.Printf("tam\n")
                case 2:
                    fmt.Printf("hel\n")
                case 3:
                    fmt.Printf("maa\n")
                case 4:
                    fmt.Printf("huh\n")
                case 5:
                    fmt.Printf("tou\n")
                case 6:
                    fmt.Printf("kes\n")
                case 7:
                    fmt.Printf("hei\n")
                case 8:
                    fmt.Printf("elo\n")
                case 9:
                    fmt.Printf("syy\n")
                case 10:
                    fmt.Printf("lok\n")
                case 11:
                    fmt.Printf("mer\n")
                case 12:
                    fmt.Printf("jou\n")
                }
            }else{
                if num/13!=0{
                    switch (num/13) {
                    case 1:
                        fmt.Printf("tam ")
                    case 2:
                        fmt.Printf("hel ")
                    case 3:
                        fmt.Printf("maa ")
                    case 4:
                        fmt.Printf("huh ")
                    case 5:
                        fmt.Printf("tou ")
                    case 6:
                        fmt.Printf("kes ")
                    case 7:
                        fmt.Printf("hei ")
                    case 8:
                        fmt.Printf("elo ")
                    case 9:
                        fmt.Printf("syy ")
                    case 10:
                        fmt.Printf("lok ")
                    case 11:
                        fmt.Printf("mer ")
                    case 12:
                        fmt.Printf("jou ")
                    }
                }
                switch (num % 13) {
                case 1:
                    fmt.Printf("jan\n")
                case 2:
                    fmt.Printf("feb\n")
                case 3:
                    fmt.Printf("mar\n")
                case 4:
                    fmt.Printf("apr\n")
                case 5:
                    fmt.Printf("may\n")
                case 6:
                    fmt.Printf("jun\n")
                case 7:
                    fmt.Printf("jly\n")
                case 8:
                    fmt.Printf("aug\n")
                case 9:
                    fmt.Printf("sep\n")
                case 10:
                    fmt.Printf("oct\n")
                case 11:
                    fmt.Printf("nov\n")
                case 12:
                    fmt.Printf("dec\n")
                }
            }
        }else{
            //是字符串怎么办
            c:=strings.Replace(c,"\n","",-1)
            c1:=strings.Split(c," ")
            for _,v:= range c1{
                switch (v) {
                case "tam":
                    result+=1*13
                case "hel":
                    result+=2*13
                case "maa":
                    result+=3*13
                case "huh":
                    result+=4*13
                case "tou":
                    result+=5*13
                case "kes":
                    result+=6*13
                case "hei":
                    result+=7*13
                case "elo":
                    result+=8*13
                case "syy":
                    result+=9*13
                case "lok":
                    result+=10*13
                case "mer":
                    result+=11*13
                case "jou":
                    result+=12*13
                case "tret":
                    result+=0
                case "jan":
                    result+=1
                case "feb":
                    result+=2
                case "mar":
                    result+=3
                case "apr":
                    result+=4
                case "may":
                    result+=5
                case "jun":
                    result+=6
                case "jly":
                    result+=7
                case "aug":
                    result+=8
                case "sep":
                    result+=9
                case "oct":
                    result+=10
                case "nov":
                    result+=11
                case "dec":
                    result+=12
                }
            }
            fmt.Println(result)
            result=0
        }
    }

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!