제출 #1317204

#제출 시각아이디문제언어결과실행 시간메모리
1317204jesusargHack (APIO25_hack)C++20
0 / 100
4 ms1460 KiB
#include <bits/stdc++.h> #define ll long long #define pb push_back #define f first #define s second #define sz size() using namespace std; ll collisions(vector<ll> x); bool ask(const vector<ll>& v, const vector<ll>& u){ vector<ll> q; q.reserve(v.sz+u.sz); for(auto i:v){q.pb(i);} for(auto i:u){q.pb(i);} return collisions(q)>0; } ll solve(ll n){ for(ll p = 2; p*p <= n; p++){ if(n%p != 0){ continue; } while(n%p==0){ ll c=n/p; if(collisions({1, c+1})>0){ n=c; }else{ break; } } } return n; } int hack(){ ll mx=(ll)(1e9); const int b = int(sqrt(1e9)-2); vector<ll> v,u; for(int i = 1; i <= b; i++){ v.pb(i); } for(ll x = ((mx>>1)/b)*b; x <= mx+b; x+=b){ u.push_back(x); } while(v.sz > 1 || u.sz > 1){ if(v.sz < u.sz){ swap(v,u); } int mid=(v.sz>>1); vector<ll> l(v.begin(),v.begin()+mid); vector<ll> r(v.begin()+mid,v.end()); if(ask(l,u)){ v.swap(l); }else{ v.swap(r); } } //return llabs(v[0]-u[0]); -> es multiplo pero no necesariamente n return solve(llabs(v[0]-u[0])); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...