답안 #782156

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
782156 2023-07-13T15:47:19 Z serifefedartar Lutrija (COCI19_lutrija) C++17
7 / 70
1 ms 212 KB
#include <bits/stdc++.h>
using namespace std;

#define fast ios::sync_with_stdio(0);cin.tie(0);
typedef long long ll;
#define f first
#define s second
#define LOGN 25
#define MAXN 200005

bool isPrime(ll x) {
    if (x == 1)
        return false;

    for (ll i = 2; i * i <= x; i++)
        if (x % i == 0)
            return false;
    return true;
}

int main() {
    fast
    ll A, B;
    cin >> A >> B;

    if (A == 2 && B == 2) {
        cout << "3\n2 5 2" << endl;
        return 0;
    } else if (A != 2 && B != 2) {
        if (isPrime(abs(A-B))) {
            cout << "2\n" << A << " " << B << endl;
            return 0;
        } else if (isPrime(abs(A-2)) && isPrime(abs(B-2))) {
            cout << "3\n" << A << " 2 " << B << endl;
            return 0;
        }
    } else if (A == 2 && B != 2) {
        for (ll i = B-2; i > 2; i-=2) {
            if (!isPrime(i) || (2 + (B-i)/2 > 30))
                break;
            if (isPrime(i) && isPrime(i-2)) {
                cout << 2 + (B-i)/2 << endl;
                cout << "2 ";
                for (ll j = i; j <= B; j += 2)
                    cout << j << " ";
                cout << endl;
                return 0;
            }
        }
        for (ll i = B+2; i <= 1e14; i+=2) {
            if (!isPrime(i) || (2 + (i-B)/2 > 30))
                break;
            if (isPrime(i) && isPrime(i-2)) {
                cout << 2 + (i-B)/2 << endl;
                cout << "2 ";
                for (ll j = i; j >= B; j -= 2)
                    cout << j << " ";
                cout << endl;   
                return 0;
            }
        }
    } else if (A != 2 && B == 2) {
        for (ll i = A-2; i > 2; i-=2) {
            if (!isPrime(i) || (2 + (A-i)/2 > 30))
                break;
            if (isPrime(i) && isPrime(i-2)) {
                cout << 2 + (A-i)/2 << endl;
                for (ll j = A; j >= i; j -= 2)
                    cout << j << " ";
                cout << "2\n";
                return 0;
            }
        }
        for (ll i = A+2; i <= 1e14; i+=2) {
            if (!isPrime(i) || (2 + (i-A)/2 > 30))
                break;
            if (isPrime(i) && isPrime(i-2)) {
                cout << 2 + (i-A)/2 << endl;
                for (ll j = A; j <= i; j += 2)
                    cout << j << " ";
                cout << "2\n";
                return 0;
            }
        }
    }
    cout << -1 << endl;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -