题目描述

一个众所周知的事实,在每一慧星后面是一个不明飞行物UFO。 这些不明飞行物时常来收集来自在地球上忠诚的支持者。 不幸地,他们的空间在每次旅行只能带上一群支持者。 他们要做的是用一种聪明的方案让每一个团体人被慧星带走。 他们为每个慧星起了一个名字,通过这些名字来决定一个团体是不是特定的慧星带走。 那个相配方案的细节在下面被给出; 你的工作要写一个程序来通过团体的名字和彗星的名字来决定一个组是否应该与在那一颗慧星后面的不明飞行物搭配。 团体的名字和慧星的名字都以下列各项方式转换成一个数字: 这个最后的数字代表名字中所有字母的信息,"A" 是 1 和 "Z" 是 26。 举例来说,团体 "USACO" 会是 21191315=17955 。 如果团体的数字 mod 47 等于慧星的数字 mod 47,那么你要告诉这个团体准备好被带走 ! 写一个程序读入慧星的名字和团体的名字,如果搭配打印"GO",否则打印"STAY" 团体的名字和慧星的名字将会是有没有空格或标点的一串大写字母(不超过6个字母)。

输入描述:

第 1行: 彗星的名字(一个长度为1到6的字符串)

第 2 行: 团体的名字(一个长度为1到6的字符串)

输出描述:

单独一行包含"STAY"或"GO".

go语言代码

package main
import(
    "fmt"
)

func main() {
    var n, m string
    
    fmt.Scanf("%s", &n)
    fmt.Scanf("%s", &m)
    
    sumn, summ := getNumber(n), getNumber(m)
    
    if sumn % 47 == summ % 47 {
        fmt.Println("GO")
        return
    }
    fmt.Println("STAY")
    return 
}

func getNumber(s string) int {
    sum := 1 //容易写成0
    for _, v := range s {
        sum *= int(v) - int('A') +1 //这里都是大写字母,需要减去a的ASCII码后加上1
    }
    return sum
}

题目评价

该题目难度为简单,但这题要注意的是这里全部是大写字母,不需要考虑小写字母。另外,该题没有没有考虑到数据量很大的情况。解决方法每次相乘时后取模。