[题目描述]
Your Ride Is Here
你要乘坐的飞碟在这里
一个众所周知的事实,在每一慧星后面是一个不明飞行物UFO。 这些不明飞行物时常来收集来自在地球上忠诚的支持者。 不幸地,他们的空间在每次旅行只能带上一群支持者。 他们要做的是用一种聪明的方案让每一个团体人被慧星带走。 他们为每个慧星起了一个名字,通过这些名字来决定一个团体是不是特定的慧星带走。 那个相配方案的细节在下面被给出, 你的工作要写一个程序来通过团体的名字和彗星的名字来决定一个组是否应该与在那一颗慧星后面的不明飞行物搭配。
团体的名字和慧星的名字都以下列各项方式转换成一个数字: 这个最后的数字代表名字中所有字母的信息,"A" 是 1 和 "Z" 是 26。举例来说,团体 "USACO" 会是 21*19*1*3*15=17955 。 如果团体的数字 mod 47 等于慧星的数字 mod 47,那么你要告诉这个团体准备好被带走 !
写一个程序读入慧星的名字和团体的名字,如果搭配打印"GO"否者打印"STAY" ,团体的名字和慧星的名字将会是没有空格或标点的一串大写字母(不超过6个字母)。
Examples:
Input | Output |
COMETQ
HVNGAT | GO |
ABSTAR
USACO | STAY |
PROGRAM NAME: ride
INPUT FORMAT
第 1 行: | 彗星的名字(一个长度为1到6的字符串) |
第 2 行: | 团体的名字(一个长度为1到6的字符串) |
SAMPLE INPUT (file ride.in)
COMETQ
HVNGAT
OUTPUT FORMAT
单独一行包含"STAR"或"GO".
SAMPLE OUTPUT (file ride.out)
GO
[解题思路]
就是简单的判断两字符串的Hash值mod47是否相同。
[Code]
{
ID: zane2951
PROG: ride
LANG: PASCAL
}
program ride;
var
w:array['A'..'Z'] of longint;
ans1,ans2,i,len1,len2:longint;
s1,s2:string;
ch:char;
//----------main-----------
begin
assign(input,'ride.in'); reset(input);
assign(output,'ride.out'); rewrite(output);
for ch:='A' to 'Z' do w[ch]:=ord(ch)-64;
readln(s1); readln(s2);
len1:=length(s1); ans1:=1;
for i:=1 to len1 do ans1:=ans1*w[s1[i]];
ans1:=ans1 mod 47;
len2:=length(s2); ans2:=1;
for i:=1 to len2 do ans2:=ans2*w[s2[i]];
ans2:=ans2 mod 47;
if ans1=ans2 then writeln('GO') else writeln('STAY');
close(input); close(output);
end.