【USACO 1.1.1】你的飞碟在这儿
【问题描述】
一个众所周知的事实,在每一慧星后面是一个不明飞行物UFO。 这些不明飞行物时常来收集来自在地球上忠诚的支持者。 不幸地,他们的空间在每次旅行只能带上一群支持者。 他们要做的是用一种聪明的方案让每一个团体人被慧星带走。他们为每个慧星起了一个名字,通过这些名字来决定一个团体是不是特定的慧星带走。 那个相配方案的细节在下面被给出; 你的工作要写一个程序来通过团体的名字和彗星的名字来决定一个组是否应该与在那一颗慧星后面的不明飞行物搭配。 团体的名字和慧星的名字都以下列各项方式转换成一个数字: 这个最后的数字代表名字中所有字母的信息,"A" 是 1 和 "Z" 是 26。 举例来说,团体 "USACO" 会是 21*19*1*3*15=17955 。 如果团体的数字除以mod 47的余数等于慧星的数字除以47的余数,那么你要告诉这个团体需要准备好被带走 ! 写一个程序读入慧星的名字和团体的名字,如果搭配打印"GO"否则打印"STAY" 团体的名字和慧星的名字将会是有没有空格或标点的一串大写字母(不超过6个字母)。
【输入】
输入文件 ride.in ,共 2 行。
Line 1: An upper case character string of length 1..6 that is the name of the comet.
Line 2: An upper case character string of length 1..6 that is the name of the group.
第 1 行: 彗星的名字(一个长度为1到6的字符串)
第 2 行: 团体的名字(一个长度为1到6的字符串)
【输出】
输出文件 ride.out ,仅 1 行。
A single line containing either the word "GO" or the word "STAY".
单独一行包含"STAY"或"GO".
【分析】
直接模拟
1 #include <cstdlib> 2 #include <iostream> 3 #include <cstdio> 4 #include <cstring> 5 #include <cmath> 6 #include <algorithm> 7 using namespace std; 8 int main() 9 { 10 char a[10],b[10]; 11 //文件操作 12 freopen("ride.in","r",stdin); 13 freopen("ride.out","w",stdout); 14 scanf("%s",a);scanf("%s",b); 15 int a_num=1,b_num=1,i; 16 for (i=0;i<strlen(a);i++) a_num=a_num*(a[i]-'A'+1)%47; 17 for (i=0;i<strlen(b);i++) b_num=b_num*(b[i]-'A'+1)%47; 18 if (a_num==b_num) printf("GO");else printf("STAY"); 19 return 0; 20 }