#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"); } |
English