https://www.acmicpc.net/problem/13706
정수 N이 주어졌을 때, N의 제곱근을 구하는 프로그램을 작성하시오.
첫째 줄에 양의 정수 N이 주어진다. 정수 N의 제곱근은 항상 정수이며, N의 길이는 800자리를 넘지 않는다.
첫째 줄에 정수 N의 제곱근을 출력한다.
BigInteger bigInteger = new BigInteger(””);
.add()
.subtract()
.multiply()
.divide()
.remainder()
.comparseTo()
n.compareTo(N)
→ 이것의 결과 값이 n-N
이라고 생각하면 좀더 이해하기 편할 것 같다.(left+right)/2
으로 갱신해준다.**while(n.compareTo(N)!=0){
n = left.add(right).divide(BigInteger.TWO);
if(n.pow(2).compareTo(N)==0){
break;
}else if(n.pow(2).compareTo(N) == 1){
right = n;
}else if(n.pow(2).compareTo(N) == -1){
left = n;
}
}**
**package Baekjoon.java.silver;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.math.BigInteger;
public class boj13706 {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BigInteger N = new BigInteger(br.readLine());
BigInteger left = BigInteger.ONE;
BigInteger right = N;
BigInteger n = BigInteger.ONE;
while(n.compareTo(N)!=0){
n = left.add(right).divide(BigInteger.TWO);
if(n.pow(2).compareTo(N)==0){
break;
}else if(n.pow(2).compareTo(N) == 1){
right = n;
}else if(n.pow(2).compareTo(N) == -1){
left = n;
}
}
System.out.println(n);
}
}**