import java.util.*;
import java.lang.*;
import java.io.*;
import java.math.BigInteger;
class Ideone
{
{
java.util.function.UnaryOperator<BigInteger> squareRootFunction = (inputData) -> {
do {
squareRoot1
= inputData.
divide(squareRoot2
).
add(squareRoot2
).
divide(BigInteger.
valueOf(2L
)); if(squareRoot1.compareTo(squareRoot2) == 0) return squareRoot1;
} while(true);
};
BigInteger inputData
= new BigInteger("1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012"); System.
out.
println(inputData
); BigInteger 平方根
= squareRootFunction.
apply(inputData
); BigInteger 検算値
= inputData.
divide(squareRootFunction.
apply(inputData
)); System.
out.
println(検算値.
multiply(検算値
)); System.
out.
println(検算値.
multiply(平方根
)); }
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLm1hdGguQmlnSW50ZWdlcjsgCgpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CglqYXZhLnV0aWwuZnVuY3Rpb24uVW5hcnlPcGVyYXRvcjxCaWdJbnRlZ2VyPiBzcXVhcmVSb290RnVuY3Rpb24gPSAoaW5wdXREYXRhKSAtPiB7CgkJQmlnSW50ZWdlciBzcXVhcmVSb290MSA9ICBpbnB1dERhdGEuZGl2aWRlKEJpZ0ludGVnZXIudmFsdWVPZigyTCkpOwoJCWRvIHsKCQkJQmlnSW50ZWdlciBzcXVhcmVSb290MiA9ICBzcXVhcmVSb290MTsKCQkJc3F1YXJlUm9vdDEgPSBpbnB1dERhdGEuZGl2aWRlKHNxdWFyZVJvb3QyKS5hZGQoc3F1YXJlUm9vdDIpLmRpdmlkZShCaWdJbnRlZ2VyLnZhbHVlT2YoMkwpKTsKCQkJaWYoc3F1YXJlUm9vdDEuY29tcGFyZVRvKHNxdWFyZVJvb3QyKSA9PSAwKSByZXR1cm4gc3F1YXJlUm9vdDE7CgkJfSB3aGlsZSh0cnVlKTsKCX07CgoJCUJpZ0ludGVnZXIgaW5wdXREYXRhID0gbmV3IEJpZ0ludGVnZXIoIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIiKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oaW5wdXREYXRhKTsKCQlCaWdJbnRlZ2VyIOW5s+aWueaguSA9IHNxdWFyZVJvb3RGdW5jdGlvbi5hcHBseShpbnB1dERhdGEpOyAKCQlTeXN0ZW0ub3V0LnByaW50bG4o5bmz5pa55qC5KTsKCQlCaWdJbnRlZ2VyIOaknOeul+WApCA9IGlucHV0RGF0YS5kaXZpZGUoc3F1YXJlUm9vdEZ1bmN0aW9uLmFwcGx5KGlucHV0RGF0YSkpOwoJCVN5c3RlbS5vdXQucHJpbnRsbijmpJznrpflgKQubXVsdGlwbHko5qSc566X5YCkKSk7CgkJU3lzdGVtLm91dC5wcmludGxuKOaknOeul+WApC5tdWx0aXBseSjlubPmlrnmoLkpKTsKCX0KfQ==