#include <cstdio> #include <vector> using namespace std; #define MX 4000000 bool is_composite[MX+9]; vector<int> primes; bool is_prime(long long n) { for (auto p: primes) { if (p != n && n % p == 0) { return false; } } return true; } int main(){ for (long long i = 2; i < MX; i++) { if (!is_composite[i]) { primes.push_back(i); for (long long j = i * i; j < MX; j += i) { is_composite[j] = 1; } } } fprintf(stderr, "%d\n", primes.back()); long long n; scanf("%lld", &n); vector<int> digs; while (n) { digs.push_back(n % 10); n /= 10; } bool ok = false; for (size_t i = 1; i < digs.size(); i++) { long long first = 0; int last = -1; for (ssize_t j = i - 1; j >= 0; j--) { first *= 10; first += digs[j]; if (last == -1) { last = digs[j]; } } if (last == 0) { continue; } long long second = 0; for (size_t j = digs.size() - 1; j >= i; j--) { second *= 10; second += digs[j]; } if (is_prime(first) && is_prime(second)) { fprintf(stderr, "%lld %lld\n", second, first); ok = true; break; } } printf("%s\n", ok ? "TAK" : "NIE"); }
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 | #include <cstdio> #include <vector> using namespace std; #define MX 4000000 bool is_composite[MX+9]; vector<int> primes; bool is_prime(long long n) { for (auto p: primes) { if (p != n && n % p == 0) { return false; } } return true; } int main(){ for (long long i = 2; i < MX; i++) { if (!is_composite[i]) { primes.push_back(i); for (long long j = i * i; j < MX; j += i) { is_composite[j] = 1; } } } fprintf(stderr, "%d\n", primes.back()); long long n; scanf("%lld", &n); vector<int> digs; while (n) { digs.push_back(n % 10); n /= 10; } bool ok = false; for (size_t i = 1; i < digs.size(); i++) { long long first = 0; int last = -1; for (ssize_t j = i - 1; j >= 0; j--) { first *= 10; first += digs[j]; if (last == -1) { last = digs[j]; } } if (last == 0) { continue; } long long second = 0; for (size_t j = digs.size() - 1; j >= i; j--) { second *= 10; second += digs[j]; } if (is_prime(first) && is_prime(second)) { fprintf(stderr, "%lld %lld\n", second, first); ok = true; break; } } printf("%s\n", ok ? "TAK" : "NIE"); } |