Advertisement
Guest User

Untitled

a guest
Sep 8th, 2020
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.71 KB | None | 0 0
  1. /**
  2. Bismilla- hir rahma-nir rahi-m
  3. @uthor Md Hasibur Rahman (Evan)
  4. JKKNIU
  5. */
  6.  
  7.  
  8. #include<iostream>
  9. #define ll long long
  10. #define FI freopen("input.txt","r",stdin)
  11. #define FO freopen("output.txt","w",stdout)
  12. #define PrintCase(i) printf("Case %d: ",i)
  13. #define sc(a) scanf("%d",&a)
  14. #define scl(a) scanf("%lld",&a)
  15. #define rep(i,n) for(int i=0;i<n;i++)
  16. #define pb push_back
  17. #define MAX 1000000
  18. #define fast ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
  19.  
  20.  
  21.  
  22. using namespace std;
  23.  
  24. bool isPrime(ll a)
  25. {
  26. for(ll i=2;i*i<=a;i++)
  27. if(a%i==0)
  28. return false;
  29. return true;
  30. }
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37. bool isPowerOfTwo(ll a)
  38. {
  39. if(a==1)
  40. return true;
  41. if(a&1)
  42. return false;
  43. while(a)
  44. {
  45. a/=2;
  46. if(a!=1 && a&1)
  47. return false;
  48. if(a==1)
  49. return true;
  50. }
  51. return true;
  52. }
  53.  
  54.  
  55.  
  56.  
  57. ll gcd(ll a, ll b)
  58. {
  59. if(a<0 || b<0)
  60. {
  61. a = abs(a);
  62. b = abs(b);
  63. }
  64. if(a<b)
  65. swap(a,b);
  66. if(a%b==0 || b==0)
  67. return b;
  68. else
  69. return gcd(b,a%b);
  70. }
  71.  
  72.  
  73.  
  74. ll lcm(ll a, ll b)
  75. {
  76. return (a*b)/gcd(a,b);
  77. }
  78.  
  79.  
  80.  
  81. ll power(ll base, ll exponent)
  82. {
  83. ll ans = 1;
  84. for(ll i=1;i<=exponent;i++)
  85. ans*=base;
  86. return ans;
  87. }
  88.  
  89.  
  90.  
  91.  
  92. bool isPowerOfX(ll x, ll value)
  93. {
  94. if(value==1)
  95. return true;
  96. while(value)
  97. {
  98. value/=x;
  99. if(value%x && value!=1)
  100. return false;
  101. }
  102. return true;
  103. }
  104.  
  105.  
  106.  
  107.  
  108. ll sqrt(ll x)
  109. {
  110. ll i = 1;
  111. while (i*i <= x)
  112. i++;
  113.  
  114. return i - 1;
  115. }
  116.  
  117.  
  118. ll SUM[11111111];
  119. ll el[11111111];
  120. bool visit[11111111];
  121.  
  122.  
  123. void preCal()
  124. {
  125. for(ll i=0;i<11111111;i++)
  126. el[i] = i;
  127. for(ll i=2;i<11111111;i++)
  128. {
  129. if(!visit[i])
  130. {
  131. for(ll j = i;j<11111111;j+=i)
  132. {
  133. visit[j] = true;
  134. el[j] = el[j]/i*(i-1);
  135. }
  136. }
  137. }
  138. for(int i=1;i<11111111;i++)
  139. {
  140. SUM[i]+=SUM[i-1] + el[i] - 1;
  141. }
  142. }
  143.  
  144.  
  145.  
  146. ll b_search(ll n, ll p)
  147. {
  148. ll l = 1,r = n,mid,ans = -1;
  149. while(l<=r)
  150. {
  151. mid = l + ((r-l)/2);
  152. if(SUM[n/mid] + (n/mid)>=p)
  153. {
  154. ans = mid;
  155. l = mid+1;
  156. }
  157. else
  158. r = mid-1;
  159. }
  160. return ans;
  161. }
  162.  
  163. int main()
  164. {
  165. fast;
  166. preCal();
  167. int t;
  168. cin>>t;
  169. //cout<<el[6]<<" "<<el[5]<<" "<<el[4];
  170. //cout<<SUM[6] + (25/4)<<endl;
  171. for(int i=1;i<=t;i++)
  172. {
  173. ll n,p;
  174. cin>>n>>p;
  175. ll ans = b_search(n,p);
  176. cout<<"Case "<<i<<": "<<ans <<endl;
  177. }
  178. return 0;
  179. }
  180.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement