洛谷P1200 [USACO1.1] 你的飞碟在这儿 Your Ride Is Here
拿到这道题,我们其实就有直接暴力求解的方法:
使用两个字符串s,team分别表示彗星的字符串,队伍的字符串
然后再使用一个Counts数组,分别储存A-Z字符的对应的数字大小,例如A对应1,Z对应26.如此一来,我们只需要让数组每个元素的值等于下标的值+1,就可以成功初始化这个数组了
下一步就是定义Sum_s,Sum_team,分别计算彗星,队伍它们所对应的数字的大小,然后使用Numbers_s,Numbers_team。来储存他们对47取余的结果,最后判断Numbers_s,Numbers_team是否相等即可
以上就是这道题的思路讲解,思路其实十分简单,下面直接上代码:
#include<iostream>
using namespace std;
int main()
{
//表示彗星的字符串
string s;
cin >> s;
//表示队伍的字符串
string team;
cin >> team;
//用于储存各个字母的数字分别是多少,例如A-1
int Counts[26];
for (int i = 0; i < 26; i++) Counts[i] = i + 1;
//用来储存彗星的数字
int Sum_s = 1;
for (int i = 0; i < s.size(); i++) {
Sum_s *= Counts[(s[i] - 'A')];
}
//用于储存小组的名字
int Sum_team = 1;
for (int i = 0; i < team.size(); i++) {
Sum_team *= Counts[team[i] - 'A'];
}
int Numbers_s = Sum_s % 47;
int Numbers_team = Sum_team % 47;
if (Numbers_s == Numbers_team) cout << "GO";
else cout << "STAY";
return 0;
}