結果

問題 No.3127 Multiple of Twin Prime
ユーザー ripity
提出日時 2025-04-25 21:41:08
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 308 ms / 2,500 ms
コード長 688 bytes
コンパイル時間 3,391 ms
コンパイル使用メモリ 277,676 KB
実行使用メモリ 7,848 KB
最終ジャッジ日時 2025-04-25 21:41:22
合計ジャッジ時間 7,548 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 12
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
using namespace std;

using ll = long long;

vector<ll> v;

void precalc() {
  const ll L = 10'000'005;
  vector<bool> is_prime(L + 1, true);
  for(ll p = 2; p <= L; p++) {
    // if(p % 1000 == 0) cout << p << endl;
    if(!is_prime[p]) continue;
    for(int k = 2; k * p <= L; k++) is_prime[k * p] = false;
  }
  for(ll p = 2; p <= L - 2; p++) {
    if(is_prime[p] && is_prime[p + 2]) v.push_back(p * (p + 2));
  }
}

void solve() {
  ll N;
  cin >> N;
  auto it = upper_bound(v.begin(), v.end(), N);
  cout << (it == v.begin() ? -1LL : *prev(it)) << "\n";
}

int main() {
  precalc();
  // cout << v.size() << endl;
  int t;
  cin >> t;
  while(t--) solve();
}
0