SPOJ Finding the Kth Prime

  1. // Header file begin
  2. #include<iostream>
  3. #include<cstdio>
  4. #include<cstring>
  5. #include<map>
  6. #include<string>
  7. #include<vector>
  8. #include<cmath>
  9. #include<cctype>
  10. #include<sstream>
  11. #include<set>
  12. #include<list>
  13. #include<stack>
  14. #include<utility>
  15. #include<queue>
  16. #include<algorithm>
  17. #include<cstdlib>
  18. #include<bitset>
  19. // End
  20. //..........
  21. // Macro
  22. #define sf scanf
  23. #define pf printf
  24. #define lp1(i,n) for(i=0;i<n;i++)
  25. #define lp2(i,n) for(i=1;i<=n;i++)
  26. #define mset(c,v) memset(c,v,sizeof(c))
  27. #define outs(a) cout<<" "<<a<<" "
  28. #define nl puts("")
  29. #define sq(x) ((x)*(x))
  30. #define all(x) x.begin(),x.end()
  31. #define reall(x) x.rbegin(),x.rend()
  32. #define s_wap(x,y) x^=y;y^=x;x^=y;
  33. #define sz size()
  34. #define gc getchar()
  35. #define psb push_back
  36. #define freader freopen("input.txt","r",stdin)
  37. // End.........
  38.  
  39. // Size
  40. #define mx7 87000000
  41. #define mx6 1500000
  42. #define mx5 100005
  43. #define mx4 10001000
  44. #define inf 1<<30 //infinity value
  45. #define eps 1e-9
  46. #define mx (65540)
  47. #define mod 1000000007
  48. #define pi acos(-1.0)
  49.  
  50. // Macros for Graph
  51.  
  52. #define white 1
  53. #define gray 2
  54. #define black 3
  55. #define nil 0
  56.  
  57. using namespace std;
  58.  
  59. typedef long long LL;
  60.  
  61.  
  62. LL prime[(mx7>>6)+1], prm[(mx7>>1)+9], plen=1;
  63.  
  64. #define setbit(n) (prime[n>>6] |= (1 << ((n >> 1)&31)))
  65. #define checkbit(n) (prime[n>>6] & (1 << ((n >> 1)&31)))
  66.  
  67. void sieve()
  68. {
  69. LL i,j;
  70.  
  71. for(i=3; i*i<=mx7; i+=2)
  72. {
  73. if(!checkbit(i))
  74. {
  75. for(j=i*i; j<=mx7; j+=(2*i))
  76. {
  77. setbit(j);
  78. }
  79. }
  80. }
  81.  
  82. prm[plen++] = 2;
  83.  
  84. for(i=3; i<=mx7; i+=2)
  85. {
  86. if(!checkbit(i))
  87. {
  88. prm[plen++] = i;
  89. }
  90. }
  91.  
  92. // cout << plen;
  93.  
  94. //for(i=1; i<=plen; i++) cout << prm[i] << " ";
  95. }
  96.  
  97. int main()
  98. {
  99. sieve();
  100. LL q;
  101. sf("%lld", &q);
  102. while(q--)
  103. {
  104. LL k;
  105. sf("%lld", &k);
  106. pf("%lld\n", prm[k]);
  107. }
  108.  
  109. return 0;
  110. }

Comments

Popular posts from this blog

SPOJ-CMG - Collecting Mango

LightOJ 1009 - Back to Underworld

LeetCode Palindrome Number