結果
問題 |
No.3253 Banned Product
|
ユーザー |
![]() |
提出日時 | 2025-09-05 22:00:25 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 7,055 bytes |
コンパイル時間 | 3,511 ms |
コンパイル使用メモリ | 289,696 KB |
実行使用メモリ | 10,916 KB |
最終ジャッジ日時 | 2025-09-05 22:01:25 |
合計ジャッジ時間 | 7,031 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 2 WA * 1 TLE * 1 -- * 5 |
ソースコード
/** * author: mackerel38 * created: 05.09.2025 22:00:11 **/ #line 2 "library/util/template.hpp" #ifdef poe #define debug(x) cerr<<#x<<": "<<x<<endl #else #define debug(x) #endif #include<bits/stdc++.h> using namespace std; using ll=long long; using ull=unsigned long long; using ld=long double; using pi=pair<int,int>; using pll=pair<ll,ll>; using str=string; template<class T>using vec=vector<T>; using vi=vec<int>;using vvi=vec<vi>;using vvvi=vec<vvi>;using vvvvi=vec<vvvi>;using vvvvvi=vec<vvvvi>; using vll=vec<ll>;using vvll=vec<vll>;using vvvll=vec<vvll>;using vvvvll=vec<vvvll>;using vvvvvll=vec<vvvvll>; using vpi=vec<pi>;using vvpi=vec<vpi>;using vvvpi=vec<vvpi>;using vvvvpi=vec<vvvpi>;using vvvvvpi=vec<vvvvpi>; using vpll=vec<pll>;using vvpll=vec<vpll>;using vvvpll=vec<vvpll>;using vvvvpll=vec<vvvpll>;using vvvvvpll=vec<vvvvpll>; template<class T>using pq=priority_queue<T,vector<T>>; template<class T>using pqg=priority_queue<T,vector<T>,greater<T>>; #define rep(i,n) for(int i=0;i<(int)(n);i++) #define rep1(i,n) for(int i=1;i<=(int)(n);i++) #define per(i,n) for(int i=(int)(n)-1;0<=i;i--) #define per1(i,n) for(int i=(int)(n);0<i;i--) #define range(i,x) for(auto&i:x) #define range2(i,j,x) for(auto&[i,j]:x) #define all(x) (x).begin(),(x).end() #define rall(x) (x).rbegin(),(x).rend() #define Sort(x) sort((x).begin(),(x).end()) #define troS(x) sort((x).rbegin(),(x).rend()) #define Reverse(x) reverse((x).begin(),(x).end()) #define uniq(x) sort((x).begin(),(x).end());(x).erase(unique((x).begin(),(x).end()),(x).end()) #define nextp(x) next_permutation((x).begin(),(x).end()) #define nextc(x,k) next_combination((x).begin(),(x).end(),k) #define bit(x,i) (((x)>>(i))&1) #define pf push_front #define pb push_back #define df pop_front #define db pop_back #define fi first #define se second #define elif else if #define Yes cout<<"Yes"<<'\n' #define No cout<<"No"<<'\n' #define YN(x) cout<<((x)?"Yes":"No")<<'\n' #define O(x) cout<<(x)<<'\n' #define ismid(a,b,c) ((a)<=(b)&&(b)<(c)) template<class S,class T>bool chmin(S&a,T b){if(a>b){a=b;return true;}return false;} template<class S,class T>bool chmax(S&a,T b){if(a<b){a=b;return true;}return false;} template<class T>bool next_combination(T l,T r,int k){T m=l+k;if(l==r||l==m||r==m)return false;T t=m;while(l!=t){t--;if(*t<*(r-1)){T d=m;while(*t>=*d)d++;iter_swap(t,d);rotate(t+1,d+1,r);rotate(m,m+(r-d)-1,r);return true;}}rotate(l,m,r);return false;} template<class T>T Min(T a,T b){return a<b?a:b;} template<class T,class...Args>T Min(T a,T b,Args...args){return Min(Min(a,b),args...);} template<class T>T Max(T a,T b){return a>b?a:b;} template<class T,class...Args>T Max(T a,T b,Args...args){return Max(Max(a,b),args...);} template<class T>T Sum(T a){return a;} template<class T,class... Args>T Sum(T a,Args... args){return a+Sum(args...);} template<class T>T Max(const vector<T>&v){return *max_element(all(v));} template<class T>T Min(const vector<T>&v){return *min_element(all(v));} template<class T>T Sum(const vector<T>&v){return accumulate(all(v),T(0));} template<class S,class T>T Max(const pair<S,T>&p){return max(p.first,p.second);} template<class S,class T>T Min(const pair<S,T>&p){return min(p.first,p.second);} template<class S,class T>T Sum(const pair<S,T>&p){return p.first+p.second;} template<class S,class T>istream&operator>>(istream&s,pair<S,T>&p){s>>p.first>>p.second;return s;} template<class S,class T>ostream&operator<<(ostream&s,pair<S,T>&p){s<<p.first<<' '<<p.second<<'\n';return s;} template<class T>istream&operator>>(istream&s,vector<T>&v){for(auto&i:v)s>>i;return s;} template<class T>ostream&operator<<(ostream&s,vector<T>&v){for(auto&i:v)s<<i<<' ';s<<'\n';return s;} template<class F>long long bsearch(long long ok,long long ng,F&f){while(abs(ok-ng)>1){long long mid=(ok+ng)/2;if(f(mid))ok=mid;else ng=mid;}return ok;} const int dxy[5]={0,1,0,-1,0}; const int dx[8]={0,1,0,-1,1,1,-1,-1}; const int dy[8]={1,0,-1,0,1,-1,1,-1}; #define nl '\n' #define sp ' ' #define inf ((1<<30)-(1<<15)) #define INF (1LL<<61) #define mod 998244353 void IO() { ios::sync_with_stdio(false); cin.tie(nullptr); cout<<fixed<<setprecision(30); } void solve(); // poe #line 3 "library/math/prime.hpp" using namespace std; // 素数判定 O(log n) bool isprime(long long n) { if (n <= 1) return false; if (n == 2) return true; if (n % 2 == 0) return false; int flag = 1; if (n < 4759123141LL) flag = 0; vector<vector<long long>> tests = {{2, 7, 61}, {2, 325, 9375, 28178, 450775, 9780504, 1795265022}}; long long s = 0, d = n - 1; while (d % 2 == 0) { ++s; d >>= 1; } for (auto a : tests[flag]) { if (n <= a) return true; __int128_t x = 1, a2=a%n, d2 = d; while (d2) { if (d2 & 1) x = x * a2 % n; a2 = a2 * a2 % n; d2 >>= 1; } if (x != 1) { long long t; for (t = 0; t < s; ++t) { if (x == n - 1) break; x = x * x % n; } if (t == s) return false; } } return true; } // n 以下の素数を列挙する O(n log log n) vector<int> enumprimes(int n) { vector<bool> primeflag(n+1); vector<int> re; for (long long i=2; i<=n; i++) { if (primeflag[i]) continue; re.push_back(i); for (long long j=i*i; j<=n; j+=i) { primeflag[j] = true; } } return re; } // 素因数分解をする O(n^0.25) void factorize(long long n, vector<long long>& factors) { if (n <= 1) return; if (isprime(n)) { factors.push_back(n); return; } if (n % 2 == 0) { while (n % 2 == 0) { factors.push_back(2); n /= 2; } factorize(n, factors); return; } while (true) { __int128_t x = rand() % (n - 2) + 2; __int128_t y = x; __int128_t c = rand() % (n - 1) + 1; __int128_t m = 1; while (m == 1) { x = (x * x + c) % n; y = (y * y + c) % n; y = (y * y + c) % n; m = gcd((long long)(x - y + n), n); if (m == n) break; } if (m != n) { factorize(m, factors); factorize(n / m, factors); return; } } } #line 3 "library/math/isqrt.hpp" using namespace std; // floor(sqrt(n)) を返す long long isqrt(long long n) { assert(0 <= n); long long re = sqrt(n); while ((re + 1) * (re + 1) <= n) re++; while (n < re * re) re--; return re; } #line 4 "contests/abc059/a/main.cpp" int main() { IO(); int T=1; cin >> T; while (T--) solve(); } void solve() { ll n, k; cin >> n >> k; if (n == k) { cout << -1 << nl; return; } n++; while (n--) { bool flag = false; for (ll i=1; i*i<=n&&i<=k; i++) { if (n%i == 0 && n/i<=k) flag = true; if (flag) break; } if (!flag) { cout << n << nl; return; } } }