【小韦同学@神犇营-USACO1.1.1-不明飞行物】
题目:
描述
UFO(不明飞行物)经常从地球上带走忠实的追随者。由于飞船容量限制,他们每次只能带走一个追随者,问题是该带走谁呢?UFO设计了一个策略:根据飞船名称和追随者姓名来决定带走谁。你的任务是编写一个程序,帮助UFO来确定该带走哪个人。
追随者姓名和飞船名称都按照以下方式转换成一个数字:最终的数字是名称中所有字母的乘积,其中“A”是1,“Z”是26。例如,“USACO”转换后的数字是21191315=17955。如果追随者姓名数字除以47的余数与飞船名称数字除以47的余数相同,那么这位追随者就要做好出发的准备了:)
编写一个程序,读出UFO飞船名称和追随者姓名,并根据上面的方案判断两者是否匹配,如果匹配,则打印“GO”,如果不匹配,则打印“STAY”。追随者姓名和飞船名称是一串大写字母,没有空格或标点,最多6个字符长。
输入
由两行组成:第一行是飞船名称,第二行是追随者姓名。
输出
由一行组成:显示“GO”或“STAY”。
输入样例1
COMETQ
HVNGAT
输出样例1
GO
题解:
/**************************************************************************
* 题目:神犇营-USACO1.1.1-不明飞行物
* 作者:小韦同学
* 邮箱:weichangying_wcy@163.com
* 题解:
思路:这是简单的字符串使用,将两个名字分别算出它们的积,然后判断它们模
47是否相等即可。
注意:1°两个积要记得初始化为1。
2°计算大写字母对应的数字:字符 - 'A' + 1(不要忘了加1)。
***************************************************************************/
#include <string>
#include <iostream>
using namespace std;
// 将大写字母转换为数字后连乘,返回连乘后的积
int code(string s) {
int mul = 1;
for (int i = 0; i < s.size(); i++) {
mul *= s[i] - 'A' + 1;
}
return mul;
}
int main() {
string ufo, name; // 飞船名字,追随者名字
cin >> ufo >> name;
int mul1 = code(ufo), mul2 = code(name); // 调用code函数
if (mul1 % 47 == mul2 % 47) cout << "GO";
else cout << "STAY";
return 0;
}
我是小韦同学,企者不立,跨者不行,每天进步一点点。
欢迎大家多多交流,如果发现有错误,请多指正。有疑问的同学也可以留言评论或者发邮件。
邮箱:weichangying_wcy@163.com