結果
問題 |
No.3127 Multiple of Twin Prime
|
ユーザー |
|
提出日時 | 2025-04-25 22:17:42 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 346 ms / 2,500 ms |
コード長 | 870 bytes |
コンパイル時間 | 2,159 ms |
コンパイル使用メモリ | 197,876 KB |
実行使用メモリ | 20,896 KB |
最終ジャッジ日時 | 2025-04-25 22:17:53 |
合計ジャッジ時間 | 7,062 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 12 |
ソースコード
#include <bits/stdc++.h> using namespace std; typedef pair<int, int> pii; typedef pair<int, pii> piii; typedef long long ll; const int N = 2000086, MOD = 1e9 + 7, INF = 0x3f3f3f3f; ll res; int n, m, cnt, w[N]; int primes[N * 5]; bool st[N * 5]; set<ll> ma; inline void init() { for (int i = 2; i < N * 5; i++) { if (!st[i]) primes[cnt++] = i; for (int j = 0; primes[j] * (ll)i < N * 5; j++) { st[i * primes[j]] = 1; if (i % primes[j] == 0) break; } } for (int i = 2; i + 2 < N * 5; i++) if (!st[i] && !st[i + 2]) ma.insert((ll)i * (ll)(i + 2)); } int main() { init(); int T; cin >> T; while (T--) { ll x; cin >> x; auto u = ma.upper_bound(x); if (u == ma.begin()) puts("-1"); else u--, printf("%lld\n", *u); } return 0; }