結果

問題 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
権限があれば一括ダウンロードができます

ソースコード

diff #

#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';
	}
}
0