#include <cstdio> //#define N 3333433 #define N 760000 #define zero 31 #define jeden zero << 5 #define dwa zero << 10 #define trzy zero << 15 #define cztery zero << 20 #define piec zero << 25 int znaki[N]; void koduj(char c, int pozycja) { int j = pozycja % 6; int i = pozycja / 6; znaki[i] |= (c - 'a') << (j * 5); } char dekoduj(int pozycja) { int j = pozycja % 6; int i = pozycja / 6; int znak = znaki[i]; if (j == 0) { znak &= zero; } else if (j == 1) { znak &= jeden; } else if (j == 2) { znak &= dwa; } else if (j == 3) { znak &= trzy; } else if (j == 4) { znak &= cztery; } else if (j == 5) { znak &= piec; } znak >>= (j * 5); return (char) (znak + 'a'); } int main() { int n; int dl = 0; scanf("%d\n", &n); char ch; if (n == 0) { while (true) { if (scanf("%c", &ch) != 1) { break; } if (ch == '\n') { break; } koduj(ch, dl++); } for (int i = 0; i < dl / 2; i++) { if (dekoduj(i) != dekoduj(dl - i - 1)) { printf("NIE"); return 0; } } } else { dl = n / 2; for (int i = 0; i < dl; i++) { scanf("%c", &ch); koduj(ch, i); } if (n % 2 == 1) { scanf("%c", &ch); } for (int i = 0; i < dl; i++) { scanf("%c", &ch); if (ch != dekoduj(dl - i - 1)) { printf("NIE"); return 0; } } } printf("TAK"); 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 | #include <cstdio> //#define N 3333433 #define N 760000 #define zero 31 #define jeden zero << 5 #define dwa zero << 10 #define trzy zero << 15 #define cztery zero << 20 #define piec zero << 25 int znaki[N]; void koduj(char c, int pozycja) { int j = pozycja % 6; int i = pozycja / 6; znaki[i] |= (c - 'a') << (j * 5); } char dekoduj(int pozycja) { int j = pozycja % 6; int i = pozycja / 6; int znak = znaki[i]; if (j == 0) { znak &= zero; } else if (j == 1) { znak &= jeden; } else if (j == 2) { znak &= dwa; } else if (j == 3) { znak &= trzy; } else if (j == 4) { znak &= cztery; } else if (j == 5) { znak &= piec; } znak >>= (j * 5); return (char) (znak + 'a'); } int main() { int n; int dl = 0; scanf("%d\n", &n); char ch; if (n == 0) { while (true) { if (scanf("%c", &ch) != 1) { break; } if (ch == '\n') { break; } koduj(ch, dl++); } for (int i = 0; i < dl / 2; i++) { if (dekoduj(i) != dekoduj(dl - i - 1)) { printf("NIE"); return 0; } } } else { dl = n / 2; for (int i = 0; i < dl; i++) { scanf("%c", &ch); koduj(ch, i); } if (n % 2 == 1) { scanf("%c", &ch); } for (int i = 0; i < dl; i++) { scanf("%c", &ch); if (ch != dekoduj(dl - i - 1)) { printf("NIE"); return 0; } } } printf("TAK"); return 0; } |