結果

問題 No.3127 Multiple of Twin Prime
ユーザー しょうゆ団子
提出日時 2025-04-25 22:29:50
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 480 ms / 2,500 ms
コード長 912 bytes
コンパイル時間 3,620 ms
コンパイル使用メモリ 280,068 KB
実行使用メモリ 47,848 KB
最終ジャッジ日時 2025-04-25 22:30:01
合計ジャッジ時間 9,898 ms
ジャッジサーバーID
(参考情報)
judge2 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 12
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>

using namespace std;

int main() {
    const int M = 1e7;
    vector<int> isPrime(M + 1, true);
    isPrime[0] = false, isPrime[1] = false;
    for (int i = 2; i <= M; i++) {
        if (isPrime[i]) {
            for (int j = i + i; j <= M; j += i) {
                isPrime[j] = false;
            }
        }
    }
    vector<int> prime;
    for (int i = 2; i <= M; i++) {
        if (isPrime[i]) prime.push_back(i);
    }
    vector<long long> ans;
    for (int i = 1; i < prime.size(); i++) {
        if (prime[i] - prime[i - 1] == 2) {
            ans.push_back((long long) prime[i - 1] * prime[i]);
        }
    }
    
    int T;
    cin >> T;
    while (T--) {
        long long N;
        cin >> N;
        if (N <= 14) {
            cout << -1 << endl;
        } else {
            cout << *prev(upper_bound(ans.begin(), ans.end(), N)) << endl;
        }
    }
    return 0;
}
0