結果
| 問題 |
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 |
ソースコード
#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();
}
ripity