Usaco Training 刷怪旅 第一层第一题 Your Ride Is Here

usaco training

 题目描述

众所周知,每一颗卫星后都会跟着一艘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

输出说明

先将输入转换为数字:
COMETQ
3151352017
HVNGAT
822147120
再让它们的积做模47的运算:
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;
}

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值