관측 가능한 근이 있는 구간

면접 대비

시간 제한1초메모리 제한128 MB

요약
[a,b]를 nb개의 동일한 구간으로 나눈 뒤 f(x)=1-x^2의 값이 양 끝에서 부호가 바뀌거나 0이 되는 구간의 개수를 구합니다.
난이도

쉬움10점 중 3점

유형
구현, 시뮬레이션, 수학
정답자
아직 제출이 없습니다

문제

구간 [a,b][a, b] 위에서 정의된 함수 f(x)=1−x2f(x) = 1 - x^2와, 이 구간을 똑같은 크기로 나눈 nb≥1nb \ge 1개의 소구간 [xi,xi+1][x_i, x_{i+1}](i=1,…,nbi = 1, \dots, nb, 단 x1=ax_1 = a, xnb+1=bx_{nb+1} = b)이 주어진다. 이 소구간들 중에서 f(x)f(x)의 '관측 가능한' 근을 포함하는 소구간이 몇 개인지 구하라.

소구간 [xi,xi+1][x_i, x_{i+1}] 안의 근은, xi<x<xi+1x_i < x < x_{i+1} 범위에서 f(x)f(x)의 값을 들여다보지 않고도 그 존재를 판정할 수 있을 때 '관측 가능(observable)'하다고 한다. 즉, 각 소구간은 블랙박스여서 두 끝점에서의 ff 값만 읽을 수 있다. 구체적으로, f(xi)f(x_i)와 f(xi+1)f(x_{i+1})의 부호가 서로 반대이거나(연속성에 의해 그 사이에 근이 반드시 존재한다), 두 끝점 중 하나가 근이면(f(xi)=0f(x_i) = 0 또는 f(xi+1)=0f(x_{i+1}) = 0) 그 소구간은 관측 가능한 근을 포함한다. 두 끝점의 부호가 같고 0이 아니라면, 소구간 안에 짝수 개의 근이 있을 수는 있어도 근의 존재를 보장할 수 없다.

입력

입력은 여러 개의 데이터 집합으로 이루어지며 파일의 끝까지 읽는다. 각 데이터 집합은 f(x)f(x)의 한 구간 [a,b][a, b]를 나타내며, 두 실수 aa와 bb, 그리고 소구간의 개수를 나타내는 정수 nbnb를 순서대로 담고 있다. 수와 수 사이에는 공백 문자가 자유롭게 올 수 있다. 입력 데이터는 항상 올바르다.

출력

각 데이터 집합마다, f(x)f(x)의 관측 가능한 근을 포함하는 소구간의 개수를 정수 하나로 한 줄에 출력한다. 각 결과는 줄의 맨 앞에서 시작한다.

예제1

  1. 예제 1

    입력
    -2 2 2
    0 100 5
    -1 1 1
    
    예상 출력
    2
    1
    1