有一个众所周知的事实,每个彗星的背后都藏着一个UFO。
这些UFO经常到地球来带走一些它们的忠实支持者。
不幸的是,UFO的空间有限,每次星际之旅都只能带走一组支持者。
为了让所有的支持者团队能够提前知道究竟哪组支持者会被带走,UFO们设计了如下方案:
它们给彗星制定一个名称,通过将该名称和某一组支持团队的名称进行比较,从而判断这一组支持团队是否会被带走。
具体的比较方式如下:
首先,我们将彗星和支持者团队的名称通过以下方式转化为数字:
每个大写字母对应一个整数, A A A对应 1 1 1, B B B对应 2 2 2,…, Z Z Z对应 26 26 26。
将名称中的每个字母转化为对应数字,再将这些数字相乘,例如,USACO对应的数字相乘为 21 ∗ 19 ∗ 1 ∗ 3 ∗ 15 = 17955 21 * 19 * 1 * 3 * 15 = 17955 21∗19∗1∗3∗15=17955。
将得到的乘积 mod 47
就可得到最终数字。
我们将彗星和支持者团队的名称都通过上述方式转化为最终数字后,如果两个名称对应的数字相同,那么这组支持者就将被带走。
现在,请你编写一个程序,读取彗星和支持者团队的名称,并根据上述方案判断两个名称是否匹配。
输入格式
第一行,一个由大写字母构成,长度不超过6的字符串,表示彗星的名称。第二行,一个由大写字母构成,长度不超过6的字符串,表示支持者团队的名称。输出格式
如果两个名称可以匹配,则输出”GO”,否则输出”STAY”。
注意变成数字是 - ‘A’ + 1,就是减64
常规我们转数字都是-‘0’
今天不一样(把我好坑)
#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;const int N = 1e5 +10;string a, b;
int main()
{cin >> a; cin >> b;long long res = 1, sum = 1; //十年OI一场空,不开long long见祖宗for (auto c : a)sum *= (c - 64);//遍历并乘起来int la = k;k = 0;for (auto s : b)res *= (s - 64);//遍历并乘起来if (sum % 47 == res % 47)//判断puts("GO");else puts("STAY");return 0;
}
来源:USACO 1.1
本文发布于:2024-02-01 09:03:19,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170674939935507.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |