#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"); } |
English