結果

問題 No.3127 Multiple of Twin Prime
ユーザー アンペア券
提出日時 2025-04-25 21:55:30
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 441 ms / 2,500 ms
コード長 3,580 bytes
コンパイル時間 2,073 ms
コンパイル使用メモリ 198,600 KB
実行使用メモリ 23,712 KB
最終ジャッジ日時 2025-04-25 21:55:44
合計ジャッジ時間 8,322 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 12
権限があれば一括ダウンロードができます

ソースコード

diff #

#ifdef __LOCAL
#define _GLIBCXX_DEBUG
#include "debug2.h"
#endif
#ifndef __LOCAL
#define show(...) 
#define SET_GROUP(x)
#define SET_MAXCNT(x)
#endif

#include <bits/stdc++.h>
using namespace std;
//#include <atcoder/all>
//using namespace atcoder;
//#include <boost/multiprecision/cpp_int.hpp>
//using bigint = boost::multiprecision::cpp_int;
#define SIZE(x) (int)(x.size())
#define ALL(x) x.begin(),x.end()
using ll = long long;
//int di[] = {1, 0, -1, 0, 1, -1, -1, 1};
//int dj[] = {0, 1, 0, -1, 1, 1, -1, -1};
template<class T>bool chmin(T& x,T y){if(x>y){x=y;return true;}return false;}
template<class T>bool chmax(T& x,T y){if(x<y){x=y;return true;}return false;}
template<class T>vector<T>matrix(int n1,T val){return vector<T>(n1,val);}
template<class T>vector<vector<T>>matrix(int n1,int n2,T val){return vector<vector<T>>(n1,matrix<T>(n2,val));}
template<class T>vector<vector<vector<T>>>matrix(int n1,int n2,int n3,T val){return vector<vector<vector<T>>>(n1,matrix<T>(n2,n3,val));}
template<class T>vector<vector<vector<vector<T>>>>matrix(int n1,int n2,int n3,int n4,T val){return vector<vector<vector<vector<T>>>>(n1,matrix<T>(n2,n3,n4,val));}
template<class T>T sum(vector<T>x){T r=0;for(auto e:x)r+=e;return r;}
template<class T>T max(vector<T>x){T r=x[0];for(auto e:x)chmax(r,e);return r;}
template<class T>T min(vector<T>x){T r=x[0];for(auto e:x)chmin(r,e);return r;}
template<class T>set<T>toSet(vector<T>x){set<T> r;for(auto e:x)r.emplace(e);return r;}
template<class T>map<T,ll>toMap(vector<T>x){map<T,ll>mp;for(auto e:x)mp[e]++;return mp;}
template<class T>vector<T>toVector(set<T>x){vector<T> r;for(auto e:x)r.push_back(e);return r;}
template<class T1,class T2>pair<T1,T2> operator+(pair<T1,T2>x,pair<T1,T2>y){return make_pair(x.first+y.first,x.second+y.second);}
template<class T1,class T2>pair<T1,T2> operator-(pair<T1,T2>x,pair<T1,T2>y){return make_pair(x.first-y.first,x.second-y.second);}
template<class T1,class T2>istream&operator>>(istream&is,tuple<T1,T2>&x){cin>>get<0>(x)>>get<1>(x);return is;}
template<class T1,class T2,class T3>istream&operator>>(istream&is,tuple<T1,T2,T3>&x){cin>>get<0>(x)>>get<1>(x)>>get<2>(x);return is;}
template<class T1,class T2>istream&operator>>(istream&is,pair<T1,T2>&x){cin>>x.first>>x.second;return is;}
template<class T>istream&operator>>(istream&is,vector<T>&x){for(auto&&e:x)is>>e;return is;}
template<class T>istream&operator>>(istream&is,vector<vector<T>>&x){for(auto&&e:x)for(auto&&f:e)is>>f;return is;}
template<class T>ostream&operator<<(ostream&os,const vector<T>&x){for(auto e:x)os<<e<<" ";return os;}
template<class T>ostream&operator<<(ostream&os,const vector<vector<T>>&x){for(auto e:x){for(auto f:e)os<<f<<" ";os<<"\n";}return os;}

int main(){
    ll maxN = 2e7;
    vector<ll> primes;
    vector<bool> isprime(maxN, true);
    for(ll i = 2; i < maxN; ++i){
        if(!isprime[i]) continue;
        primes.push_back(i);
        for(ll j = 2 * i; j < maxN; j += i){
            isprime[j] = false;
        }
    }

    vector<ll> prodPrime;
    for(int i = 0; i < SIZE(primes) - 1; ++i){
        if(primes[i] + 2 == primes[i + 1]){
            prodPrime.push_back(primes[i] * primes[i + 1]);
        }
    }

    int t;
    cin >> t;
    for(int i = 0; i < t; ++i){
        ll p;
        cin >> p;
        if(p < 15){
            cout << -1 << endl;
        }else{
            ll a = lower_bound(ALL(prodPrime), p + 1) - prodPrime.begin() - 1;
            //chmin(a, SIZE(prodPrime) - 1);
            //show(a, SIZE(prodPrime));
            cout << prodPrime[a] << endl;
        }
    }
    return 0;
}
0