//
// main.cpp
// pal
//
// Created by Apple on 13/12/2018.
// Copyright © 2018 Example. All rights reserved.
//
#include <cstdio>
//bool A[1300007];
// początek koniec
//std::pair<unsigned long long, std::pair<unsigned long long, unsigned long long> > hasze[4];
unsigned long long hasze[4][3];
unsigned long long liczbypier[4]={776531419,776531471,776531479,776531537};
int main(int argc, const char * argv[]) {
int i;
scanf("%d",&i);
bool czypalindrom=true;
unsigned long long cval;
char c;
for(i=0;i<4;i++) {
liczbypier[i]*=liczbypier[i];
}
for (i=0; i<4; i++) {
hasze[i][2]=1;
}
scanf(" %c",&c);
while(c>='a' && c<='z') {
cval=c-'a';
for (i=0; i<4; i++) {
hasze[i][0]=(hasze[i][0]*26+cval)%liczbypier[i];
hasze[i][1]=(hasze[i][1]+(hasze[i][2]*cval)%liczbypier[i])%liczbypier[i];
hasze[i][2]=(hasze[i][2]*26)%liczbypier[i];
}
scanf("%c",&c);
}
for (i=0; i<4; i++) {
if(hasze[i][0]!=hasze[i][1]) {
czypalindrom=false;
}
}
if (czypalindrom) {
printf("TAK\n");
} else {
printf("NIE\n");
}
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | // // main.cpp // pal // // Created by Apple on 13/12/2018. // Copyright © 2018 Example. All rights reserved. // #include <cstdio> //bool A[1300007]; // początek koniec //std::pair<unsigned long long, std::pair<unsigned long long, unsigned long long> > hasze[4]; unsigned long long hasze[4][3]; unsigned long long liczbypier[4]={776531419,776531471,776531479,776531537}; int main(int argc, const char * argv[]) { int i; scanf("%d",&i); bool czypalindrom=true; unsigned long long cval; char c; for(i=0;i<4;i++) { liczbypier[i]*=liczbypier[i]; } for (i=0; i<4; i++) { hasze[i][2]=1; } scanf(" %c",&c); while(c>='a' && c<='z') { cval=c-'a'; for (i=0; i<4; i++) { hasze[i][0]=(hasze[i][0]*26+cval)%liczbypier[i]; hasze[i][1]=(hasze[i][1]+(hasze[i][2]*cval)%liczbypier[i])%liczbypier[i]; hasze[i][2]=(hasze[i][2]*26)%liczbypier[i]; } scanf("%c",&c); } for (i=0; i<4; i++) { if(hasze[i][0]!=hasze[i][1]) { czypalindrom=false; } } if (czypalindrom) { printf("TAK\n"); } else { printf("NIE\n"); } return 0; } |
English