#include <stdio.h>
typedef long long LL;
typedef unsigned long long ULL;
#define REP(i,n) for(int i=0;i<(n);++i)
#define FOR(i,a,b) for (int i=(a); i<(b); ++i)
#define FORD(i,a,b) for (int i=(a)-1; i>=(b); --i)
#define pb push_back
#define mp make_pair
#define st first
#define nd second
const int MOD = 1000000021;
const int P = 6007;
int main(int argc, char* argv[]) {
scanf("%*d");
LL hash0 = 0, hash1 = 0, multiplier = 1;
char c;
while (scanf("%c", &c) != EOF) {
hash0 = (hash0 * P + c) % MOD;
hash1 = (hash1 + multiplier * c) % MOD;
multiplier = multiplier * P % MOD;
}
if (hash0 == hash1) {
printf("TAK\n");
} else {
printf("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 25 26 27 28 29 30 31 32 33 | #include <stdio.h> typedef long long LL; typedef unsigned long long ULL; #define REP(i,n) for(int i=0;i<(n);++i) #define FOR(i,a,b) for (int i=(a); i<(b); ++i) #define FORD(i,a,b) for (int i=(a)-1; i>=(b); --i) #define pb push_back #define mp make_pair #define st first #define nd second const int MOD = 1000000021; const int P = 6007; int main(int argc, char* argv[]) { scanf("%*d"); LL hash0 = 0, hash1 = 0, multiplier = 1; char c; while (scanf("%c", &c) != EOF) { hash0 = (hash0 * P + c) % MOD; hash1 = (hash1 + multiplier * c) % MOD; multiplier = multiplier * P % MOD; } if (hash0 == hash1) { printf("TAK\n"); } else { printf("NIE\n"); } } |
English