#include <bits/stdc++.h> int n; long long int akt[2]={1, 1}; char z; long long int hasz[2][2]; long long int pot[]={331, 313}; long long int mod=1e9+9; int main() { scanf("%d", &n); while(scanf(" %c", &z)!=EOF) { for(int i=0; i<2; i++) { hasz[i][0]=(hasz[i][0]*pot[i]+z)%mod; hasz[i][1]=(hasz[i][1]+(long long int)z*akt[i])%mod; akt[i]=(akt[i]*pot[i])%mod; } } printf("%s", (hasz[0][0]==hasz[0][1] && hasz[1][0]==hasz[1][1]) ? "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> int n; long long int akt[2]={1, 1}; char z; long long int hasz[2][2]; long long int pot[]={331, 313}; long long int mod=1e9+9; int main() { scanf("%d", &n); while(scanf(" %c", &z)!=EOF) { for(int i=0; i<2; i++) { hasz[i][0]=(hasz[i][0]*pot[i]+z)%mod; hasz[i][1]=(hasz[i][1]+(long long int)z*akt[i])%mod; akt[i]=(akt[i]*pot[i])%mod; } } printf("%s", (hasz[0][0]==hasz[0][1] && hasz[1][0]==hasz[1][1]) ? "TAK\n" : "NIE\n"); } |