結果
問題 |
No.3127 Multiple of Twin Prime
|
ユーザー |
![]() |
提出日時 | 2025-04-25 22:58:35 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 766 bytes |
コンパイル時間 | 3,616 ms |
コンパイル使用メモリ | 280,232 KB |
実行使用メモリ | 64,372 KB |
最終ジャッジ日時 | 2025-04-25 22:59:03 |
合計ジャッジ時間 | 13,015 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 8 WA * 4 |
ソースコード
#include <bits/stdc++.h> using namespace std; using ll = long long; int main() { vector<int> product(11'000'000); for(int i=2; i<=3163; ++i) { for(int j=i; i*j<=10'000'001; j+=2) { product[i*j] = true; if(j == 2) --j; } } vector<ll> prime; for(int i=2; i<=11'000'000; i+=2) { if(!product[i]) prime.emplace_back(i); if(i == 2) --i; } int t; cin >> t; for(int _=0; _<t; ++_) { ll n; cin >> n; ll m = sqrt(n); while(m*m - 1 > n) --m; while(m*m - 1 <= n) ++m; int idx = lower_bound(prime.begin(), prime.end(), m-1) - prime.begin() - 1; if(idx >= 0) { while(0 <= idx && idx < prime.size()-1 && prime[idx] + 2 != prime[idx + 1]) --idx; cout << prime[idx] * (prime[idx] + 2) << '\n'; } else cout << -1 << '\n'; } }