제출 #516705

#제출 시각아이디문제언어결과실행 시간메모리
516705KoDLutrija (COCI19_lutrija)C++17
70 / 70
152 ms324 KiB
#include <bits/stdc++.h>

using std::vector;
using std::array;
using std::pair;
using std::tuple;

using i64 = std::int64_t;

constexpr bool is_prime(const i64 x) {
    if (x <= 1) {
        return false;
    }
    for (i64 i = 2; i * i <= x; ++i) {
        if (x % i == 0) {
            return false;
        }
    }
    return true;
}

template <class T> void println(const T& x) {
    std::cout << x << '\n';
}

template <class T, class... Arg> void println(const T& x, const Arg&... args) {
    std::cout << x << ' ';
    println(args...);
}

int main() {
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(nullptr);
    i64 A, B;
    std::cin >> A >> B;
    if (is_prime(std::abs(A - B))) {
        println(2);
        println(A, B);
        return 0;
    }
    const bool x = is_prime(A + 2), y = is_prime(A - 2);
    const bool z = is_prime(B + 2), w = is_prime(B - 2);
    if (x and z) {
        println(5);
        println(A, A + 2, 2, B + 2, B);
        return 0;
    }
    if (x and w) {
        println(4);
        println(A, A + 2, 2, B);
        return 0;
    }
    if (y and z) {
        println(4);
        println(A, 2, B + 2, B);
        return 0;
    }
    if (y and w) {
        println(3);
        println(A, 2, B);
        return 0;
    }
    if (A == 2 and z) {
        println(3);
        println(2, B + 2, B);
        return 0;
    }
    if (B == 2 and x) {
        println(3);
        println(A, A + 2, 2);
        return 0;
    }
    std::cout << -1 << '\n';
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...