题目描述
众所周知,每一颗卫星后都会跟着一艘UFO。这些UFO经常来地球收集忠诚的外星人崇拜者。 不幸的是,这些UFO每一次飞行只有能容纳下一组人的空间。 但他们通过一种聪明的方法让人们提前知道哪一组会被带走: 他们为每一个彗星和每一组人取了一个名字,而二者的名字通过特殊方式处理将决定轮到哪一组被带走(你认为是谁命名了这些彗星?)。 联系的具体规则在下面给出; 你的任务是写出一个程序,获取小组和彗星的名字并判断该小组是否可以跟该彗星后面的UFO离开。
小组与彗星的名字都会根据下面的规则转换为数字: 最终的结果是名字中所有字母次序的积。 比如说, 名为 "USACO" 的小组的结果将是 21 * 19 * 1 * 3 * 15 = 17955. 如果小组的数字模47和彗星的数字模47的结果相同,那么你就可以通知那个小组去收拾行李啦! (a模b是指a整除b所得余数,34模10=4)
请写一个程序,获取小组与彗星的名字,再根据上述规则二者名字是否能够配对。 如果配对成功,返回 "GO" ,如果配对失败,返回 "STAY" 。 给出的小组与彗星的名字都会是大写字母,无空格或标点符号,上限为6个字符。
例子:
输入 | 输出 |
COMETQ HVNGAT | GO |
ABSTAR USACO | STAY |
文件名: ride
这意味着你需要在文件头中填入:
PROG: ride
WARNING: 必须包含 'ride' 否则将会使用错误的测试数据或没有测试数据
输入格式
第1行: 只包含大写字母的彗星名,长度在1..6的区间 第2行: 只包含大写字母的组名,长度在1..6的区间 注意事项: 输入文件的每一行末尾有一个换行符(newline)但是没有回车符(return)。 有时候程序员会按照windows系统的规定在换行时候写回车符+换行符,请不要这么做! 使用简单的输入方式 "readln" (针对Pascal) 或 "fscanf" and "fid>>string" (针对C/C++)。
注意事项 2: 由于特殊字符的存在,请确定你的程序为诸如'newline'(也就是 '\n')的字符或是'\0'这样的结束符(如果你使用的语言中含有这个字符,比如C和C++)留出位置. 这意味着,你需要8个字符的输入位置而不是6个。
输入范例 (文件 ride.in)
COMETQ HVNGAT输出格式
包含'GO'或'STAY'的一行输出输出范例 (文件 ride.out)
GO
输出说明
先将输入转换为数字:再让它们的积做模47的运算:
C O M E T Q 3 15 13 5 20 17 H V N G A T 8 22 14 7 1 20 3 * 15 * 13 * 5 * 20 * 17 = 994500 mod 47 = 27 8 * 22 * 14 * 7 * 1 * 20 = 344960 mod 47 = 27因为这两个积模47后的结果都是27,输出应为 'GO'.
作为第一层第一题,应该很好懂,代码也很好写出来
就是注意下这个网站的特点:
(1):在代码的最前面要有一段这样的注释
/*
ID:
TASK:ride
LANG:C++
*/
(2)在输入的最后必须要有换行
(3)要用文件输入输出
因为很简单,代码就直接出示了
/*
ID:
TASK: ride
LANG: C++
*/
# include <iostream>
# include <cstdio>
using namespace std;
# define int long long
string star,group;
int a=1,b=1;
signed main(){
freopen("ride.in","r",stdin);
freopen("ride.out","w",stdout);
cin>>star>>group;
for (int i=0;i<star.length();i++){
a*=(star[i]-'A'+1);
}
for (int i=0;i<group.length();i++){
b*=(group[i]-'A'+1);
}
if (a%47==b%47){
printf("GO\n");
}else{
printf("STAY\n");
}
fclose(stdin);
fclose(stdout);
return 0;
}