题目
题解
代码
/** * code69 */
import java.util.*;
public class code69 {
// public static int mySqrt(int x) {
// long ans = 0;
// for (long i = 0; i <= Math.sqrt(x); i++) {
// if (i * i <= x && (i + 1) * (i + 1) > x) {
// ans = i;
// }
// }
// return (int)ans;
// }
// public static int mySqrt(int x) {
// if (x == 0) {
// return 0;
// }
// long right = x;
// long left = 1;
// long mid;
// while (left <= right) {
// mid = left + (right - left) / 2;
// if (mid * mid > x) {
// right = mid - 1;
// } else if (mid * mid < x) {
// if ((mid + 1) * (mid + 1) > x) {
// return (int) mid;
// }
// left = mid + 1;
// } else if (mid * mid == x) {
// return (int) mid;
// }
// }
// return (int) left;
// }
// x = (x + a / x) / 2
public static int mySqrt(int x) {
long res = x;
while (res * res > x) {
res = (res + x / res) / 2;
}
return (int) res;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextInt()) {
int x = sc.nextInt(); // x == 2147395600
int res = mySqrt(x); // res == 46340
System.out.println(res);
}
sc.close();
}
}