题目大意
有两个由大写字母构成的字符串(长度在1到6之间),将字符串每个字符对应成数字:A-1;B-2;......;Z-26。并将字符串内字母对应的数字连乘。如:“USACO”就是21*19*1*3*15=17955。
比较两个字符串翻译成数字之后模47的结果,相同则输出 GO;不同则输出STAY。
输入格式
line 1:第一个字符串
line 2:第二个字符串
输出格式
一行,GO或者STAY
样例输入
COMETQ
HVNGAT
样例输出
GO
题解
将字符串转化成数字乘积,为了避免越界,可以每一步都模47。然后比较两者答案。
代码
#include<stdio.h>
#include<string.h>
int main()
{
FILE *fin = fopen ("ride.in", "r");
FILE *fout = fopen ("ride.out", "w");
char str1[6],str2[6];
int a=1,b=1,i1,i2,i;
fscanf(fin,"%s %s",str1,str2);
i1=strlen(str1);
i2=strlen(str2);
for(i=0;i<i1;i++)
{
a=a*(str1[i]-'A'+1)%47;
}
for(i=0;i<i2;i++)
{
b=b*(str2[i]-'A'+1)%47;
}
if(a==b)
{
fprintf(fout,"GO\n");
}
else
{
fprintf(fout,"STAY\n");
}
return 0;
}