#include<bits/stdc++.h> using namespace std; char c; long long hasz11, hasz12, hasz21, hasz22, klucz1=29, klucz2=31, n; const int mod=1009974397; int main() { cin>> n; while(cin >> c) { hasz11 = ((hasz11 + c-'a'+1)*29)%mod; hasz12 = ((hasz12 + c-'a'+1)*31)%mod; hasz21 = (hasz21 + (c-'a'+1)*klucz1)%mod; klucz1 *= 29; klucz1 %= mod; hasz22 = (hasz22 + (c-'a'+1)*klucz2)%mod; klucz2 *= 31; klucz2 %= mod; } if(hasz11 == hasz21 && hasz12 == hasz22) cout<<"TAK"; else cout<< "NIE"; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #include<bits/stdc++.h> using namespace std; char c; long long hasz11, hasz12, hasz21, hasz22, klucz1=29, klucz2=31, n; const int mod=1009974397; int main() { cin>> n; while(cin >> c) { hasz11 = ((hasz11 + c-'a'+1)*29)%mod; hasz12 = ((hasz12 + c-'a'+1)*31)%mod; hasz21 = (hasz21 + (c-'a'+1)*klucz1)%mod; klucz1 *= 29; klucz1 %= mod; hasz22 = (hasz22 + (c-'a'+1)*klucz2)%mod; klucz2 *= 31; klucz2 %= mod; } if(hasz11 == hasz21 && hasz12 == hasz22) cout<<"TAK"; else cout<< "NIE"; } |