#include <bits/stdc++.h> using namespace std; long long int mod = 10805396698; long long int pot = 4141; int main() { scanf("%*d"); char c = getchar(); c = getchar(); long long int hasz1 = 0; long long int hasz2 = 0; long long int haszp = 1; while (c != '\n') { hasz1 = (pot * hasz1 + c) % mod; hasz2 = (haszp * c + hasz2) % mod; haszp = (haszp * pot) % mod; c = getchar(); } puts(hasz1 == hasz2 ? "TAK\n" : "NIE\n"); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #include <bits/stdc++.h> using namespace std; long long int mod = 10805396698; long long int pot = 4141; int main() { scanf("%*d"); char c = getchar(); c = getchar(); long long int hasz1 = 0; long long int hasz2 = 0; long long int haszp = 1; while (c != '\n') { hasz1 = (pot * hasz1 + c) % mod; hasz2 = (haszp * c + hasz2) % mod; haszp = (haszp * pot) % mod; c = getchar(); } puts(hasz1 == hasz2 ? "TAK\n" : "NIE\n"); } |