import java.util.*; import java.math.*; public class Main{ static BigInteger cal(BigInteger x){ BigInteger l = BigInteger.ONE ; BigInteger r = x ; BigInteger temp = BigInteger.ZERO ; while(!l.equals(r)){ BigInteger mid = (l.add(r)).divide(BigInteger.valueOf(2)) ; if(temp.compareTo(BigInteger.ZERO)!=0&&temp.compareTo(mid)==0){ break ; }else{ temp = mid ; } if(temp.compareTo(BigInteger.ZERO)==0){ temp = mid ; } if(mid.multiply(mid).compareTo(x)==1){ r=mid ; }else{ l=mid ; } } if(l.multiply(l).compareTo(x)==1){ l=l.subtract(BigInteger.ONE) ; } return l; } public static void main(String[] args){ Scanner cin=new Scanner(System.in); while(cin.hasNext()){ BigInteger n=cin.nextBigInteger(); System.out.println(cal(n)); } } }
java大数开根号问题
最新推荐文章于 2023-04-26 17:25:55 发布