Maruf_Hasan

uva 406 bt binary

Oct 14th, 2018
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.87 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<iostream>
  3. #include<bits/stdc++.h>
  4. using namespace std;
  5. #define M 1010
  6. int nprime=0;
  7. bool mark[M];
  8.  
  9. vector<int>prime;
  10.  
  11. void primegen()
  12. {
  13. int i,j;
  14.  
  15. mark[1]=false;
  16.  
  17. mark[2]=false;
  18.  
  19. prime.push_back(1);
  20. nprime++;
  21. prime.push_back(2);
  22. nprime++;
  23. for(i=3;i<=1001;i+=2)
  24. {
  25. if(mark[i]==false)
  26. {
  27. prime.push_back(i);
  28. nprime++;
  29. }
  30. for(j=i*i;j<=1001;j+=2*i)
  31. {
  32. mark[j]=true;
  33. }
  34. }
  35.  
  36. }
  37.  
  38.  
  39. void myfunc(int n,int k,int c)
  40. {
  41.  
  42. int i;
  43. if(n==c)
  44. {
  45. printf("%d %d: ",n,c);
  46. for(i=0;prime[i]<=n;i++)
  47. printf("%d ",prime[i]);
  48.  
  49. cout<<endl;
  50. return ;
  51. }
  52. else if(k%2==0)
  53. {
  54. int count=0;
  55. printf("%d %d: ",n,c);
  56. for(i=(k/2-c)+1; ;i++)
  57. {
  58. printf("%d ",prime[i-1]);
  59. count++;
  60. if(count==2*c)
  61. {
  62. printf("\n");
  63. break;
  64. }
  65. }
  66.  
  67. }
  68. else
  69. {
  70. int count=0;
  71. printf("%d %d: ",n,c);
  72. for(i=k/2-c+1; ;i++)
  73. {
  74. printf("%d ",prime[i]);
  75. count++;
  76. if(count==2*c-1)
  77. {
  78. cout<<endl;
  79. break;
  80. }
  81.  
  82. }
  83.  
  84. }
  85. }
  86. int binary(int n)
  87. {
  88. int high,low,mid;
  89. high=prime.size()-1;
  90. low=0;
  91. while(high>=low)
  92. {
  93. mid=(high+low)/2;
  94. if(prime[mid]<=n && prime[mid+1]>n) return mid;
  95. else if(prime[mid]>n)
  96. {
  97. high=mid-1;
  98. }
  99. else
  100. {
  101. low=mid+1;
  102. }
  103.  
  104. }
  105. }
  106.  
  107. int main()
  108. {
  109. int n,c,k;
  110. primegen();
  111. while(scanf("%d %d",&n,&c) && n!=EOF)
  112. {
  113. k=1+binary(n);
  114. myfunc(n,k,c);
  115. }
  116.  
  117.  
  118. return 0;
  119. }
Advertisement
Add Comment
Please, Sign In to add comment