#include <bits/stdc++.h>
using namespace std;
const long long int mod1 = 1000000123, mod2 = 1000000321, wyk = 27;
long long int wyk2 = 27, wyk1 = 27, a1_pop, a1, a2_pop, a2, b1, b1_pop, b2, b2_pop;
long long int sec(long long int w, long long int mod)
{
if (w >= mod)
w-= mod;
return w;
}
int main()
{
int n;
scanf("%d", &n);
char c = getchar();
while (c < 'a' || c > 'z') c = getchar();
while (c >= 'a' && c <= 'z')
{
a1 = ((sec(a1 + (long long)(c - 'a' + 1), mod1) * wyk) % mod1);
a2 = ((sec(a2 + (long long)(c - 'a' + 1), mod2) * wyk) % mod2);
b1 = sec((((long long)(c - 'a' + 1) * wyk1) % mod1) + b1, mod1);
b2 = sec((((long long)(c - 'a' + 1) * wyk2) % mod2) + b2, mod2);
//cout<< a1<<" " <<a2<<" " <<b1<<" "<<b2<<endl;
wyk1 = (wyk1 * wyk) % mod1;
wyk2 = (wyk2 * wyk) % mod2;
//cout<<wyk2<<endl;
c = getchar();
}
if (a1 == b1 && a2 == b2)
printf("TAK");
else
printf("NIE");
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 | #include <bits/stdc++.h> using namespace std; const long long int mod1 = 1000000123, mod2 = 1000000321, wyk = 27; long long int wyk2 = 27, wyk1 = 27, a1_pop, a1, a2_pop, a2, b1, b1_pop, b2, b2_pop; long long int sec(long long int w, long long int mod) { if (w >= mod) w-= mod; return w; } int main() { int n; scanf("%d", &n); char c = getchar(); while (c < 'a' || c > 'z') c = getchar(); while (c >= 'a' && c <= 'z') { a1 = ((sec(a1 + (long long)(c - 'a' + 1), mod1) * wyk) % mod1); a2 = ((sec(a2 + (long long)(c - 'a' + 1), mod2) * wyk) % mod2); b1 = sec((((long long)(c - 'a' + 1) * wyk1) % mod1) + b1, mod1); b2 = sec((((long long)(c - 'a' + 1) * wyk2) % mod2) + b2, mod2); //cout<< a1<<" " <<a2<<" " <<b1<<" "<<b2<<endl; wyk1 = (wyk1 * wyk) % mod1; wyk2 = (wyk2 * wyk) % mod2; //cout<<wyk2<<endl; c = getchar(); } if (a1 == b1 && a2 == b2) printf("TAK"); else printf("NIE"); return 0; } |
English