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