#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; } |