fork(21) download
  1. import java.io.BufferedReader;
  2. import java.io.InputStreamReader;
  3. import java.math.BigDecimal;
  4. import java.math.BigInteger;
  5. public class Main {
  6. public static void main(String[]args)throws Exception
  7. {
  8. String s=in.readLine();
  9. BigInteger b=new BigInteger(s),lo=new BigInteger("0"),hi,two=new BigInteger("2"),mid=BigInteger.ZERO,ans=BigInteger.ZERO;
  10. hi=b;
  11. while(hi.compareTo(lo)>0)
  12. {
  13. mid=(lo.add(hi)).divide(two);
  14. ans=mid.multiply(mid);
  15. if(ans.compareTo(b)==0)break;
  16. else if(ans.compareTo(b)<0)lo=mid.add(BigInteger.ONE);
  17. else hi=mid.subtract(BigInteger.ONE);
  18. }
  19. if(ans.compareTo(b)<=0);
  20. else mid=mid.subtract(BigInteger.ONE);
  21. BigDecimal mid1=BigDecimal.ZERO, lo1=new BigDecimal("0"),hi1=BigDecimal.ONE,two1=new BigDecimal("2"),ans1,mid2=new BigDecimal(mid),b1=new BigDecimal(b);
  22. for(int i=0;i<=150;i++)
  23. {
  24. mid1=(lo1.add(hi1)).divide(two1);
  25. ans1=mid1.multiply(mid1).add(mid2.multiply(mid2).add(two1.multiply(mid1.multiply(mid2))));
  26. if(ans1.compareTo(b1)==0) break;
  27. else if(ans1.compareTo(b1)<0)lo1=mid1;
  28. else hi1=mid1;
  29. }
  30. mid2=mid2.add(mid1);
  31. mid2=mid2.setScale(12, BigDecimal.ROUND_HALF_UP);
  32. System.out.println(mid2);
  33.  
  34. }
  35. }
Success #stdin #stdout 0.22s 380352KB
stdin
1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
stdout
1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000