#include <cstdio>
unsigned long long int haszprzod[ 4 ];
unsigned long long int hasztyl[ 4 ];
unsigned long long int liczba[ 4 ];
unsigned long long int mnoz[] = { 5, 7, 26, 2137 };
unsigned long long int modulo[] = { 1000000007, 1000000009, 1000696969, 1000000933 };
int main()
{
int n;
scanf( "%d ", &n );
char c = '0';
for( int i = 0; i < 4; ++i ) liczba[ i ] = 1;
while( true )
{
c = getchar_unlocked();
if( c == EOF ) break;
if( c == 10 ) continue;
for( int i = 0; i < 4; ++i )
{
haszprzod[ i ] *= mnoz[ i ];
haszprzod[ i ] += c;
haszprzod[ i ] %= modulo[ i ];
unsigned long long int a = liczba[ i ] * c;
a %= modulo[ i ];
hasztyl[ i ] += a;
hasztyl[ i ] %= modulo[ i ];
liczba[ i ] *= mnoz[ i ];
liczba[ i ] %= modulo[ i ];
}
}
for( int i = 0; i < 4; ++i )
{
if( hasztyl[ i ] != haszprzod[ i ] )
{
puts("NIE");
return 0;
}
}
puts("TAK");
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 | #include <cstdio> unsigned long long int haszprzod[ 4 ]; unsigned long long int hasztyl[ 4 ]; unsigned long long int liczba[ 4 ]; unsigned long long int mnoz[] = { 5, 7, 26, 2137 }; unsigned long long int modulo[] = { 1000000007, 1000000009, 1000696969, 1000000933 }; int main() { int n; scanf( "%d ", &n ); char c = '0'; for( int i = 0; i < 4; ++i ) liczba[ i ] = 1; while( true ) { c = getchar_unlocked(); if( c == EOF ) break; if( c == 10 ) continue; for( int i = 0; i < 4; ++i ) { haszprzod[ i ] *= mnoz[ i ]; haszprzod[ i ] += c; haszprzod[ i ] %= modulo[ i ]; unsigned long long int a = liczba[ i ] * c; a %= modulo[ i ]; hasztyl[ i ] += a; hasztyl[ i ] %= modulo[ i ]; liczba[ i ] *= mnoz[ i ]; liczba[ i ] %= modulo[ i ]; } } for( int i = 0; i < 4; ++i ) { if( hasztyl[ i ] != haszprzod[ i ] ) { puts("NIE"); return 0; } } puts("TAK"); return 0; } |
English