题目描述
一个众所周知的事实,在每颗慧星后面都有一个不明飞行物UFO。 这些不明飞行物时常来收集地球上的忠诚支持者。 不幸地,每次 旅行他们的空间只允许带上一个团体的支持者。 他们用一种聪明的方法让人们预先知道哪一团体的支持者将会被带走。方法如下:他们为每个慧星起了一个名字,通过这些名字来决 定某个特定的团体,是不是被慧星带走。 那个匹配方案的细节在下面给出;你的工作是要写一个程序输入团体的名字和彗星的名字,来 决定这个团体是否应该被那一颗慧星后面的不明飞行物带走。 团体的名字和慧星的名字都以下面的方式转换成一个数字: 这个最后的数字从名字的所有字母中产生,"A" 是 1 和 "Z" 是 26。 举例来说,团体 "USACO" 会是 21191315=17955 。 如果团体的数字 mod 47 等于慧星的数字 mod 47,那么你要告诉这个团体准 备好被带走 ! 写一个程序读入慧星的名字和团体的名字,根据上面的规则,指出两个名字是否匹配,如果匹配打印"GO"否者打印"STAY" 。 团体的名字和慧星的名字将会是没有空格和标点的一串大写字母(最多6个字母)。
输入格式
第 1 行: 彗星的名字(一个长度为1到6的字符串) 第 2 行:
团体的名字(一个长度为1到6的字符串)
输出格式
单独一行包含"STAY"或"GO".
样例
样例输入
COMETQ
HVNGAT
样例输出
GO
数据范围与提示
输入样例2 ABSTAR USACO 输出样例2 STAY
=========
#include<iostream>
using namespace std;
int main(){
string comet,group,res = "STAY";
int cometValue = 1,groupValue = 1;
cin>>comet>>group;
for(int i = 0;i < comet.length();i++){
cometValue *= comet[i] - 'A' + 1;
}
for(int i = 0;i < group.length();i++){
groupValue *= group[i] - 'A' + 1;
}
//彗星和小组进行匹配
if(cometValue % 47 == groupValue % 47)
res = "GO";
cout<<res;
return 0;
}
========
#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
int main(){
string U,G;
cin>>U;//飞碟名UFO_Name的缩写
cin>>G;//小组名Group_Name的缩写
int l_U = U.length(),l_G = G.length();//两个字符串的长度
int n_U = 1,n_G = 1;//分别对应两个名字所对应的数字
for(int i = 0;i < l_U;i++){
n_U *= int(U[i]) - 64;//计算这个字母对应的数字,-64是因为大写字母A在ASCII码表里的位置,可以百度一下
}
for(int i = 0;i < l_G;i++){
n_G *= int(G[i]) - 64;//同上
}
if(n_U % 47 == n_G % 47){
cout<<"GO";
return 0;//结束整个程序
}
cout<<"STAY";
return 0;
}
====