fork download
  1. #include <stdio.h>
  2. #define M 3037000498
  3. int main()
  4. {
  5. long long int n,low=1,mid,high=M,blow,bmid,bhigh;
  6. scanf("%lld",&n);
  7. while(low<=high)
  8. {
  9. if(low==blow && mid==bmid && high==bhigh) break;
  10. blow=low;
  11. bmid=mid;
  12. bhigh=high;
  13. mid=(low+high)/2;
  14. printf("%lld %lld %lld %lld\n",n,low,mid,high);
  15. if(mid*mid<n)
  16. {
  17. low=mid+1;
  18. }
  19. else if(mid*mid>=n)
  20. {
  21. high=mid-1;
  22. }
  23. }
  24. printf("%lld",mid);
  25. return 0;
  26. }
Success #stdin #stdout 0.01s 5356KB
stdin
128
stdout
128 1 1518500249 3037000498
128 1 759250124 1518500248
128 1 379625062 759250123
128 1 189812531 379625061
128 1 94906265 189812530
128 1 47453132 94906264
128 1 23726566 47453131
128 1 11863283 23726565
128 1 5931641 11863282
128 1 2965820 5931640
128 1 1482910 2965819
128 1 741455 1482909
128 1 370727 741454
128 1 185363 370726
128 1 92681 185362
128 1 46340 92680
128 1 23170 46339
128 1 11585 23169
128 1 5792 11584
128 1 2896 5791
128 1 1448 2895
128 1 724 1447
128 1 362 723
128 1 181 361
128 1 90 180
128 1 45 89
128 1 22 44
128 1 11 21
128 12 16 21
128 12 13 15
128 12 12 12
12