Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- const int LOL = 900250;
- vector<ll> sv(){
- vector<bool> p(LOL, 0);
- vector<ll> factors(LOL, 1);
- for(ll i = 2; i < LOL; ++i){
- if(p[i]==0){
- for(ll j=i;j < LOL; j+=i){
- p[j] = 1;
- ll cnt = 0, temp = j;
- while(temp > 1 && temp%i == 0){
- ++cnt, temp/=i;
- }
- if(cnt > 0){
- factors[j] *= (1LL + cnt);
- }
- }
- }
- }
- factors[0] = 0, factors[1] = 1;
- vector<ll> pre(LOL, 0);
- for(int i=1;i < LOL; ++i){
- pre[i] = pre[i-1] + factors[i];
- }
- return pre;
- }
- int main(){
- int t;cin>>t;
- vector<ll> pre = sv();
- while(t--){
- ll k;cin>>k;
- ll l = 1, r = LOL - 1, ans = -1, f = 0;
- while(l <= r){
- ll m = l + (r-l)/2;
- if(pre[m]==k){
- f = 1,cout<<m<<'\n';break;
- }
- else if(pre[m] > k){
- r = m-1, ans = m;
- }
- else{
- l = m+1;
- }
- }
- if(f==0){
- cout<<ans<<'\n';
- }
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment