(高精度 開平方)- 1166 大數開平方
阿新 • • 發佈:2018-12-09
基準時間限制:4 秒 空間限制:131072 KB 分值: 320 難度:7級演算法題
給出一個大整數N,求不大於N的平方根的最大整數。例如:N = 8,2 * 2 < 8,3 * 3 > 8,所以輸出2。
Input
給出一個大數N(N的長度 <= 100000)。
Output
輸出不大於Sqrt(n)的最大整數。
Input示例
9
Output示例
3
import java.math.*; import java.util.*; public class Main{ public static void main(String[] args) { // TODO Auto-generated method stub Scanner in=new Scanner(System.in); BigInteger n=in.nextBigInteger(); String s=n.toString(); if(s.length()%2==0) s=s.substring(0,s.length()/2+1); else s=s.substring(0,(1+s.length())/2); BigInteger m=new BigInteger(s); BigInteger two=new BigInteger("2"); if(s=="1") System.out.println(1); else{ while(n.compareTo(m.multiply(m))<0){ m=(m.add(n.divide(m))).divide(two); } System.out.println(m); } in.close(); } }