#include <cstdio>
int cands[1000002];
int primes[78498];
int main() {
// sieve
int z = 0;
for (int i = 2; i < 1000002; i++) {
cands[i] = i;
}
for (int i = 2; i < 1000002; i++) {
if(cands[i]) {
primes[z++] = i;
int j = i * 2;
while (j < 1000002) {
if(cands[j])
cands[j] = 0;
j += i;
}
}
}
long long int num;
scanf("%lli", &num);
long long int pairs[13][2];
long long int divider = 10;
// split number to maximum 13 pairs:
for(int i = 0; i < 13; i++) {
pairs[i][0] = num / divider;
pairs[i][1] = num % divider;
if (num % divider == num % (divider/10)) // leading zero
pairs[i][1] = 0;
divider *= 10;
}
for(int j = 0; j < z; j++) {
for(int i = 0; i < 13; i++) {
if(pairs[i][0] && pairs[i][1]) {
if(pairs[i][0] > primes[j] && pairs[i][0] % primes[j] == 0) {
pairs[i][0] = 0;
continue;
}
if(pairs[i][1] > primes[j] && pairs[i][1] % primes[j] == 0) {
pairs[i][1] = 0;
continue;
}
}
}
}
// check solution
bool any = false;
for(int i = 0; i < 13; i++)
if (pairs[i][0] && pairs[i][1])
any = true;
printf(any?"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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | #include <cstdio> int cands[1000002]; int primes[78498]; int main() { // sieve int z = 0; for (int i = 2; i < 1000002; i++) { cands[i] = i; } for (int i = 2; i < 1000002; i++) { if(cands[i]) { primes[z++] = i; int j = i * 2; while (j < 1000002) { if(cands[j]) cands[j] = 0; j += i; } } } long long int num; scanf("%lli", &num); long long int pairs[13][2]; long long int divider = 10; // split number to maximum 13 pairs: for(int i = 0; i < 13; i++) { pairs[i][0] = num / divider; pairs[i][1] = num % divider; if (num % divider == num % (divider/10)) // leading zero pairs[i][1] = 0; divider *= 10; } for(int j = 0; j < z; j++) { for(int i = 0; i < 13; i++) { if(pairs[i][0] && pairs[i][1]) { if(pairs[i][0] > primes[j] && pairs[i][0] % primes[j] == 0) { pairs[i][0] = 0; continue; } if(pairs[i][1] > primes[j] && pairs[i][1] % primes[j] == 0) { pairs[i][1] = 0; continue; } } } } // check solution bool any = false; for(int i = 0; i < 13; i++) if (pairs[i][0] && pairs[i][1]) any = true; printf(any?"TAK\n":"NIE\n"); return 0; } |
English