public class Main {
public int mySqrt(int x) {
if (x < 2)
return x;
int low = 0, high = x;
while (low < high - 1) {
final int mid = low + high >>> 1;
if (mid <= x / mid) {
low = mid;
} else {
high = mid;
}
}
return low;
}
public static void main
(final String[] args
){ final Main main = new Main();
final int[] tests = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 24, 25, 26};
for(final int test: tests){
System.
out.
format("Floor sqrt(%d) = %d%n", test, main.
mySqrt(test
)); }
}
}
cHVibGljIGNsYXNzIE1haW4gewoJcHVibGljIGludCBteVNxcnQoaW50IHgpIHsKCSAgICBpZiAoeCA8IDIpCgkgICAgICAgIHJldHVybiB4OwoJICAgIGludCBsb3cgPSAwLCBoaWdoID0geDsKCSAgICB3aGlsZSAobG93IDwgaGlnaCAtIDEpIHsKCSAgICAgICAgZmluYWwgaW50IG1pZCA9IGxvdyArIGhpZ2ggPj4+IDE7CgkgICAgICAgIGlmIChtaWQgPD0geCAvIG1pZCkgewoJICAgICAgICAgICAgbG93ID0gbWlkOwoJICAgICAgICB9IGVsc2UgewoJICAgICAgICAgICAgaGlnaCA9IG1pZDsKCSAgICAgICAgfQoJICAgIH0KCSAgICByZXR1cm4gbG93OwoJfQoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oZmluYWwgU3RyaW5nW10gYXJncyl7CgkJZmluYWwgTWFpbiBtYWluID0gbmV3IE1haW4oKTsKCQlmaW5hbCBpbnRbXSB0ZXN0cyA9IHsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMjQsIDI1LCAyNn07CgkJZm9yKGZpbmFsIGludCB0ZXN0OiB0ZXN0cyl7CgkJCVN5c3RlbS5vdXQuZm9ybWF0KCJGbG9vciBzcXJ0KCVkKSA9ICVkJW4iLCB0ZXN0LCBtYWluLm15U3FydCh0ZXN0KSk7CgkJfQoJfQp9