結果
| 問題 |
No.3127 Multiple of Twin Prime
|
| コンテスト | |
| ユーザー |
aqua
|
| 提出日時 | 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';
}
}
aqua