USACO Training Section 1.1你的飞碟在这里(You Ride Is Here)

时间:2022-06-28 14:41:07

 一个运用简单的哈希函数的字符串计算

题意:输入两行

第1行:一个长度为1到6的大写字母串,表示飞碟的名字。

第2行:一个长度为1到6的大写字母串,表示队伍的名字。

设定A~Z分别对应1~26,把每行的字符串字母对应的数字相乘,所得结果mod47。若两行字符串计算后的结果相同,飞碟与队伍就匹配上了并输出GO;否则输出STAY。

例如,USACO小组就是21×19×1×3×15=17955。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 string a, b;
 4 int ans = 1, num = 1 ;
 5 int main()
 6 {
 7     cin>>a>>b;
 8     for( int i =0;i<a.length();i ++ )
 9     {
10         if(a[i]>='A'&&a[i]<='Z')
11         {
12             ans *= a[i] - '@' ;
13             //cout << ans<<" ";
14         }
15 
16     }
17 
18     for( int i=0; i<b.length();i ++ )
19     {
20         if(b[i]>='A'&&b[i]<='Z')
21         {
22             num *= b[i] - '@' ;
23             //cout << num<<" ";
24         }
25 
26     }
27 
28     ans %= 47;
29     num %= 47;
30     if( ans == num )
31     {
32         cout << "GO" ;
33     }
34     else
35     {
36         cout << "STAY" ;
37     }
38     return 0 ;
39 }