2017-5-25
题目大意:
输入两个长度为1到6的字符串str1和str2(均是由大写字母构成),其中"A"是1、"B"是2 ···· "Z"是26。例如,“USACO”小组就是21*19*1*3*15=17955。如果str1和str2所求得的上述值模47的结果相同,则输出"GO",否则输出"STAY"
题解:
分别将两个字符串的每个字符减去64(或者减去'A'再加1)然后对应相乘,再对47求余即可。
代码:
#include<iostream>
#include<cstring>
#include<fstream>
using namespace std;
int main(){
ofstream fout("ride.out");
ifstream fin("ride.in");
char ch1[10],ch2[10];
int a[10],b[10];
int sum1 = 1, sum2 = 1;
fin >> ch1 >> ch2;
for(int i = 0;i < strlen(ch1);i++){
a[i] = ch1[i] - 'A' + 1;
sum1 = (sum1 * a[i] % 47);
}
for(int i = 0;i < strlen(ch2);i++){
b[i] = ch2[i] - 'A' + 1;
sum2 = (sum2 * b[i] % 47);
}
if(sum1 == sum2){
fout << "GO" << endl;
}
else{
fout << "STAY" << endl;
}
return 0;
}