#include <bits/stdc++.h>
using namespace std;
#define int long long
vector<int> modula {1000000007, 1000000009, 1297349, 1299653, 1299673, 1299689, 1299709};
vector<int> pety {31, 37, 41, 43, 47, 53, 59, 61, 67};
struct hasze {
int mod, p, pot;
int x, odw;
hasze( int a, int b ) {
mod = a;
p = b;
x = odw = 0;
pot = 1;
}
void add( char c ) {
c -= 'a';
x = (x*p+c)%mod;
odw = (odw+pot*c)%mod;
pot = p*pot%mod;
}
bool good() {
return x == odw;
}
};
int32_t main() {
ios_base::sync_with_stdio( 0 );
cin.tie( 0 );
vector<hasze> v;
for( int i=0; i<2; i++ ) {
v.push_back( hasze( modula[i], pety[i] ) );
}
/*for( int i=0; i<20000000; i++ ) {
for( int i=0; i<(int)v.size(); i++ ) {
v[i].add( 'z' );
}
}
cout << "sfd";
return 0;*/
int n;
cin >> n;
char c;
while( cin >> c ) {
for( int i=0; i<(int)v.size(); i++ ) {
v[i].add( c );
}
}
bool res = true;
for( int i=0; i<(int)v.size(); i++ ) {
res &= v[i].good();
}
if( res ) cout << "TAK\n";
else cout << "NIE\n";
return 0;
}
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | #include <bits/stdc++.h> using namespace std; #define int long long vector<int> modula {1000000007, 1000000009, 1297349, 1299653, 1299673, 1299689, 1299709}; vector<int> pety {31, 37, 41, 43, 47, 53, 59, 61, 67}; struct hasze { int mod, p, pot; int x, odw; hasze( int a, int b ) { mod = a; p = b; x = odw = 0; pot = 1; } void add( char c ) { c -= 'a'; x = (x*p+c)%mod; odw = (odw+pot*c)%mod; pot = p*pot%mod; } bool good() { return x == odw; } }; int32_t main() { ios_base::sync_with_stdio( 0 ); cin.tie( 0 ); vector<hasze> v; for( int i=0; i<2; i++ ) { v.push_back( hasze( modula[i], pety[i] ) ); } /*for( int i=0; i<20000000; i++ ) { for( int i=0; i<(int)v.size(); i++ ) { v[i].add( 'z' ); } } cout << "sfd"; return 0;*/ int n; cin >> n; char c; while( cin >> c ) { for( int i=0; i<(int)v.size(); i++ ) { v[i].add( c ); } } bool res = true; for( int i=0; i<(int)v.size(); i++ ) { res &= v[i].good(); } if( res ) cout << "TAK\n"; else cout << "NIE\n"; return 0; } |
English