結果
問題 |
No.3127 Multiple of Twin Prime
|
ユーザー |
![]() |
提出日時 | 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 |
ソースコード
#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(); }