【题目描述】
一个众所周知的事实,在每一慧星后面是一个不明飞行物UFO。这些不明飞行物时常来收集来自在地球上忠诚的支持者。不幸地,他们的飞碟在每次旅行只能带上一定数目的支持者。 他们要做的是用一种聪明的方案让每一个团体人被慧星带走。他们为每个慧星起了一个独有名字,通过这些名字来决定一个团体是不是特定的慧星带走。 那个相配方案的细节在下面被给出;你的工作要写一个程序来通过团体的名字和彗星的名字来决定一个组是否应该与在那一颗慧星后面的不明飞行物搭配。团体的名字和慧星的名字都以下列各项方式转换成一个数字: 这个最后的数字代表名字中所有字母的信息,"A" 是1 和 "Z" 是 26。举例来说,团体 "USACO" 会是 21*19*1*3*15=17955 。如果团体的数字除以47的余数等于慧星的数字除以47的余数,那么你要告诉这个团体需要准备好被带走 ! 写一个程序读入慧星的名字和团体的名字,如果能搭配打印"GO"否则打印"STAY" 团体的名字和慧星的名字将会是由没有空格或标点的一串大写字母(不超过6个字母)。
【输入格式】(ride.in)
第 1 行: 彗星的名字(一个长度为1到6的大写字符串)
第 2 行: 团体的名字(一个长度为1到6的大写字符串)
【输出格式】(ride.out)
单独一行包含"STAY"或"GO"。
【输入样例1】
COMETQ
HVNGAT
朴素方法,直接读入查找即可,方法是读入一个字符串就转化为数字,再跟输入比较,若相等就输出。
注意:数字7对应P、R、S而不是P、Q、R,所以要注意判断。
【输出样例1】
GO
【输入样例2】
ABSTAR
USACO
【输出样例2】
STAY
简单字符串处理,应该不用多说吧。
代码:
#include<cstring> #include<fstream> using namespace std; ifstream fin ("ride.in"); ofstream fout ("ride.out"); string comets,groups; int com1,com2; void readdata() { fin >> comets; fin >> groups; } void solve() { com1 = 0;com2 = 0; for(int i = 0;i < comets.length();i++) { if(com1 == 0) com1 = comets[i] - 'A' + 1; else com1 = com1 * (comets[i] - 'A' + 1); } for(int i = 0;i < groups.length();i++) { if(com2 == 0) com2 = groups[i] - 'A' + 1; else com2 = com2 * (groups[i] - 'A' + 1); } if(com1 % 47 == com2 % 47) fout << "GO" << endl; else fout << "STAY" << endl; } int main() { readdata(); solve(); return 0; }