sadiqul_amin

Equation

Apr 30th, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.99 KB | None | 0 0
  1. // 12. Equation (Version 1)
  2. // An + B Log(n) + C n^3 = X
  3. // 0 <= A,B, C <= 200, 0 <= X <= 10^15
  4.  
  5. #include <stdio.h>
  6.  
  7. int A, B, C, T;
  8. long long X, N;
  9. long long Ans;
  10.  
  11. void input()
  12. {
  13. scanf("%d%d%d%lld", &A, &B, &C, &X);
  14. return;
  15. }
  16.  
  17. int log(long long n)
  18. {
  19. double d = (double) n;
  20. int value = 0;
  21.  
  22. while (d >= 2.71828)
  23. {
  24. d /= 2.71828;
  25. value++;
  26. }
  27. return value;
  28. }
  29.  
  30. void output(int t)
  31. {
  32. printf("#%d %lld\n", t, Ans);
  33. }
  34.  
  35. long long fun(long long n)
  36. {
  37.  
  38. // if ((A * n) + (B * log(n)) + (C * n * n * n) == X)
  39. // return 1;
  40. long long value = (A * n) + (B * log(n)) + (C * n * n * n);
  41. // printf("VAlue = %d\n", value);
  42. return value;
  43. }
  44.  
  45. long long binarySearch()
  46. {
  47. long long up, low, mid;
  48.  
  49. low = 0;
  50. up = X;
  51.  
  52. if (0 == C)
  53. up = X / A;
  54. else
  55. up = 100000;
  56.  
  57. mid = (low + up) / 2;
  58.  
  59. while (up > low)
  60. {
  61. //printf("Up = %d \t Low = %d\t MID = %d\n", up, low, mid);
  62.  
  63. if (fun(mid) > X)
  64. {
  65. up = mid - 1;
  66. }
  67. else if (fun(mid) < X)
  68. low = mid + 1;
  69. else
  70. break;
  71.  
  72. mid = (up + low) / 2;
  73. }
  74. return mid;
  75. }
  76.  
  77. int main()
  78. {
  79. freopen("input.txt", "r", stdin);
  80. freopen("output.txt", "w", stdout);
  81.  
  82. int i, j, t;
  83.  
  84. scanf("%d", &T);
  85. printf("%d\n", T);
  86. for (t = 1; t <= T; t++)
  87. {
  88. input();
  89. Ans = binarySearch();
  90. output(t);
  91. }
  92.  
  93. }
  94.  
  95.  
  96. /*
  97. Input
  98. ========
  99. 50
  100. 54 65 0 1065249
  101. 15 80 0 825140
  102. 78 45 56 43920106826409
  103. 88 33 61 10862481212288
  104. 51 16 76 75340716135101
  105. 61 80 68 15298476040666
  106. 37 96 78 44938769001299
  107. 77 8 44 3924571158308
  108. 56 8 43 17011168182463
  109. 100 71 44 17570901096904
  110. 11 66 68 28117566582478
  111. 96 38 5 1094101506680
  112. 14 47 0 1388015
  113. 15 39 0 1224144
  114. 68 74 55 451315777889
  115. 21 5 91 67383748150925
  116. 35 28 75 2035141989774
  117. 6 78 21 2631305071992
  118. 76 13 85 78855792807390
  119. 6 49 26 11039099911984
  120. 61 62 0 5278951
  121. 4 10 15 109605462904585
  122. 91 83 57 3837229109476
  123. 92 96 48 38983980235224
  124. 85 45 37 23256049751867
  125. 97 79 96 11964036473147
  126. 53 91 55 16638441356852
  127. 98 75 54 12851039806048
  128. 81 88 33 23579061196932
  129. 70 22 11 3691132858445
  130. 59 77 42 15972190135321
  131. 95 21 0 6075956
  132. 47 20 22 19806806647164
  133. 63 19 78 833719207132210
  134. 21 10 13 2739764429614
  135. 92 88 76 57214773468864
  136. 4 4 56 28844376325472
  137. 88 5 33 1736061482635
  138. 40 16 0 518584
  139. 84 49 5 2483025328383
  140. 36 11 23 283065394233134
  141. 85 42 41 57756572580
  142. 85 75 51 23039114493872
  143. 53 68 88 533843927607162
  144. 86 83 22 15724649965335
  145. 77 72 0 186536
  146. 97 70 92 56061933307380
  147. 91 76 15 3475527788850
  148. 68 64 36 12416924320488
  149. 31 49 37 6708895527852
  150.  
  151.  
  152. */
  153.  
  154. /*
  155. Output
  156. =======
  157. 50
  158. #1 19716
  159. #2 54956
  160. #3 9222
  161. #4 5626
  162. #5 9971
  163. #6 6082
  164. #7 8321
  165. #8 4468
  166. #9 7341
  167. #10 7364
  168. #11 7450
  169. #12 6026
  170. #13 99107
  171. #14 81581
  172. #15 2017
  173. #16 9047
  174. #17 3005
  175. #18 5004
  176. #19 9753
  177. #20 7516
  178. #21 86529
  179. #22 19405
  180. #23 4068
  181. #24 9330
  182. #25 8566
  183. #26 4995
  184. #27 6713
  185. #28 6197
  186. #29 8940
  187. #30 6949
  188. #31 7245
  189. #32 63955
  190. #33 9656
  191. #34 22028
  192. #35 5951
  193. #36 9097
  194. #37 8016
  195. #38 3747
  196. #39 12961
  197. #40 7919
  198. #41 23088
  199. #42 1121
  200. #43 7673
  201. #44 18238
  202. #45 8941
  203. #46 2416
  204. #47 8478
  205. #48 6142
  206. #49 7013
  207. #50 5660
  208.  
  209. */
Add Comment
Please, Sign In to add comment