Advertisement
Nusrat_Ullah

CodeMarshal - Prime Queries

Jul 18th, 2019
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.01 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. bitset<100010>ck;
  5. vector<int>prime;
  6. void sieve(int z)
  7. {
  8.     ll i,j,k;
  9.     int x=z+1;
  10.     ck.set();
  11.     ck[0]=ck[1]=0;
  12.     for(i=2;i<3;i++){
  13.         for(j=2*2;j<=x;j+=2)ck[j]=0;
  14.         prime.push_back(i);
  15.     }
  16.     for(;i<=x;i+=2)if(ck[i]){
  17.         for(j=i*i,k=2*i;j<=x;j+=k)ck[j]=0;
  18.         prime.push_back(i);
  19.     }
  20. }
  21. int main()
  22. {
  23.     sieve(1e5);
  24.     int i,j,t,x,y,p_cnt;
  25.     bool k;
  26.     ll re;
  27.     scanf("%d",&t);
  28.     while(t--){
  29.         scanf("%d %d",&x,&y);
  30.         for(i=j=1,re=k=p_cnt=0;i<x;){
  31.             while(p_cnt!=y+1&&j<=x){
  32.                 if(j==x)k=true;
  33.                 if(ck[j])p_cnt++;
  34.                 j++;
  35.             }
  36.             while(k||p_cnt!=y&&i<x){
  37.                 if(k&&p_cnt<=y)re+=(j-i);
  38.                 else re+=(j-i-1);
  39.                 if(ck[i])p_cnt--;
  40.                 i++;
  41.                 if(i==x)k=false;
  42.             }
  43.         }
  44.         printf("%lld\n",re+1);
  45.     }
  46.     return 0;
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement