fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int sqrt(int x){
  5. long long start, end, mid;
  6. start=0;end=x;
  7. if(x==1){return 1;}
  8. mid = end;
  9. while((end-start)>1){
  10. mid = start + (end-start)/2;
  11. cout << start << " " << end << " " << mid << " " << endl;
  12. if(mid*mid==x){
  13. return mid;
  14. }
  15. else if(mid*mid<x){
  16. start=mid;
  17. }
  18. else{
  19. end=mid;
  20. }
  21. }
  22. if(mid*mid<x){return mid;}
  23. else{return start;}
  24. }
  25.  
  26. int main() {
  27. // your code goes here
  28. cout << sqrt(2147395599) << endl;
  29. return 0;
  30. }
Success #stdin #stdout 0s 3096KB
stdin
Standard input is empty
stdout
0 2147395599 1073697799 
0 1073697799 536848899 
0 536848899 268424449 
0 268424449 134212224 
0 134212224 67106112 
0 67106112 33553056 
0 33553056 16776528 
0 16776528 8388264 
0 8388264 4194132 
0 4194132 2097066 
0 2097066 1048533 
0 1048533 524266 
0 524266 262133 
0 262133 131066 
0 131066 65533 
0 65533 32766 
32766 65533 49149 
32766 49149 40957 
40957 49149 45053 
45053 49149 47101 
45053 47101 46077 
46077 47101 46589 
46077 46589 46333 
46333 46589 46461 
46333 46461 46397 
46333 46397 46365 
46333 46365 46349 
46333 46349 46341 
46333 46341 46337 
46337 46341 46339 
46339 46341 46340 
46339