#include <cstdio> #include <cmath> int main(int argc, char *argv[]) { auto isPrime = [](long long n) { if (n == 2) { return true; } if (n % 2 == 0) { return false; } int limit = std::sqrt(n); for (int c = 3; c <= limit; c += 2) { if (n % c == 0) { return false; } } return true; }; bool ret = false; long long right, left = 0, prev = 0, multi = 1; scanf("%lli", &right); while (right > 0) { if (left != prev) { if (isPrime(right) && isPrime(left)) { //printf("%lli %lli\n", right, left); ret = true; break; } } prev = left; left += multi * (right % 10); multi *= 10; right /= 10; } printf(ret ? "TAK\n" : "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 | #include <cstdio> #include <cmath> int main(int argc, char *argv[]) { auto isPrime = [](long long n) { if (n == 2) { return true; } if (n % 2 == 0) { return false; } int limit = std::sqrt(n); for (int c = 3; c <= limit; c += 2) { if (n % c == 0) { return false; } } return true; }; bool ret = false; long long right, left = 0, prev = 0, multi = 1; scanf("%lli", &right); while (right > 0) { if (left != prev) { if (isPrime(right) && isPrime(left)) { //printf("%lli %lli\n", right, left); ret = true; break; } } prev = left; left += multi * (right % 10); multi *= 10; right /= 10; } printf(ret ? "TAK\n" : "NIE\n"); return 0; } |