一个运用简单的哈希函数的字符串计算
题意:输入两行
第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 }