CS/알고리즘_문제풀이(자바)

2차식 정답 추측

Jedy_Kim 2021. 10. 3. 13:18
728x90

문제


2차식 f(x) = x*x+ x 가 있고, 숫자 a가 주어진다. 우리는 f(x) = a 를 만족하는 x의 값을 찾고 싶지만, 보통 이 값은 정수로 떨어지지 않는 경우가 많다. 예를 들어, f(x) = 20 을 풀고자 한다면, x = 4이기 때문에 이는 정수이지만, f(x) = 103 을 풀고자 한다면 이는 x = 9.6612... 로써 정수가 아니다.

이 문제에서는 x의 정수부분이 얼마인지를 구하는 프로그램을 작성하시오. 단, x 는 음수를 제외한 정수이다. 예를 들어, f(x) = 103 을 풀고자 한다면, x = 9.6612... 이기 때문에 정수부분은 9가 된다.

 

입력


첫 번째 줄에 숫자 a가 주어진다. ( 1 ≤ a ≤ 1,000,000,000,000,000,000 )  

출력


f(x) = a 를 만족하는 음수를 제외한 정수 x의 정수부분을 출력한다.  

예제 입력

103

예제 출력

9

 

// 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import java.util.*;
import java.io.*;
 
public class Main{
  
  static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
  static long a;
  static long start=0, end=1000000001;
  
  public static void main(String[] args) throws Exception {
 
    // Please Enter Your Code Here
    boolean flag = true;
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    a = Long.parseLong(br.readLine());
     
    while(start+1 < end) {
      long mid = (start + end) / 2;
      long temp = mid*mid + mid;
      
      if(temp <= a) {
        start = mid;
      } else {
        end = mid;
      }
    }
    
    bw.write(String.valueOf(start));  
    br.close();
    bw.flush();
    bw.close();
 
  }
}
cs

 

반응형

'CS > 알고리즘_문제풀이(자바)' 카테고리의 다른 글

모든 순열  (0) 2021.10.04
중복 없는 구간  (0) 2021.10.03
나무 자르기  (0) 2021.10.02
NN단표  (0) 2021.10.02
카드 구매하기2  (0) 2021.10.01