본문 바로가기
[C++] 알고리즘 교육/9~10. 고급정렬

[알고리즘 10.2.1] 매개 변수 탐색 - 2차식 정답 추측 (*이진탐색 외 방법)

by 안산학생 2019. 4. 25.

문제


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

이 문제에서는 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
#include <stdio.h>
 
int main() {
 
  unsigned long long int n;
  scanf("%lld"&n);
  
  unsigned long long int x = 0;
  unsigned long long int result;
  while(1){
    
    x++;
    result = x*x+x;
    
    if(result==n){
      printf("%lld",x);
      break;
    }else if(result>n){
      printf("%lld",x-1);
      break;
    }
    
  }
  
  return 0;
}
 

댓글