aj30

Untitled

May 29th, 2020
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.93 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. const int LOL = 900250;
  5. vector<ll> sv(){
  6.     vector<bool> p(LOL, 0);
  7.     vector<ll> factors(LOL, 1);
  8.     for(ll i = 2; i < LOL; ++i){
  9.         if(p[i]==0){
  10.             for(ll j=i;j < LOL; j+=i){
  11.                 p[j] = 1;
  12.                 ll cnt = 0, temp = j;
  13.                 while(temp > 1 && temp%i == 0){
  14.                     ++cnt, temp/=i;
  15.                 }
  16.                 if(cnt > 0){
  17.                     factors[j] *= (1LL + cnt);
  18.                 }
  19.             }
  20.         }
  21.     }
  22.     factors[0] = 0, factors[1] = 1;
  23.     vector<ll> pre(LOL, 0);
  24.     for(int i=1;i < LOL; ++i){
  25.         pre[i] = pre[i-1] + factors[i];
  26.     }
  27.     return pre;
  28.        
  29. }
  30. int main(){
  31.     int t;cin>>t;
  32.     vector<ll> pre = sv();
  33.     while(t--){
  34.         ll k;cin>>k;
  35.         ll l = 1, r = LOL - 1, ans = -1, f = 0;
  36.         while(l <= r){
  37.             ll m = l + (r-l)/2;
  38.             if(pre[m]==k){
  39.                 f = 1,cout<<m<<'\n';break;
  40.             }
  41.             else if(pre[m] > k){
  42.                 r = m-1, ans = m;
  43.             }
  44.             else{
  45.                 l = m+1;
  46.             }
  47.         }
  48.         if(f==0){
  49.             cout<<ans<<'\n';
  50.         }
  51.     }
  52.     return 0;
  53. }
Add Comment
Please, Sign In to add comment