#include <iostream> #include <cmath> #include <string> using namespace std; bool is_prime(long long num) { double num_sqrt = sqrt(num); if (num < 2) { return false; } for (long long i = 2; i <= num_sqrt; ++i) { if (num % i == 0) { return false; } } return true; } bool check(string numStr) { return numStr[0] != '0' && is_prime(stoll(numStr)); } int main() { string inputNum; getline(cin, inputNum); const size_t maxSplitPos = inputNum.size() - 1; for (size_t i = 1; i <= maxSplitPos; ++i) { string first_part(inputNum.begin(), inputNum.begin() + i); string second_part(inputNum.begin() + i, inputNum.end()); if (check(first_part) && check(second_part)) { cout << "TAK"; return 0; } } cout << "NIE"; 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 | #include <iostream> #include <cmath> #include <string> using namespace std; bool is_prime(long long num) { double num_sqrt = sqrt(num); if (num < 2) { return false; } for (long long i = 2; i <= num_sqrt; ++i) { if (num % i == 0) { return false; } } return true; } bool check(string numStr) { return numStr[0] != '0' && is_prime(stoll(numStr)); } int main() { string inputNum; getline(cin, inputNum); const size_t maxSplitPos = inputNum.size() - 1; for (size_t i = 1; i <= maxSplitPos; ++i) { string first_part(inputNum.begin(), inputNum.begin() + i); string second_part(inputNum.begin() + i, inputNum.end()); if (check(first_part) && check(second_part)) { cout << "TAK"; return 0; } } cout << "NIE"; return 0; } |