잘못된 계산

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

요약
차수 d인 다항식에서 얻은 d+3개의 값 중 하나가 크게 잘못되었을 때, 잘못된 값의 위치를 찾는 문제입니다.
난이도

보통10점 중 6점

유형
수학, 완전 탐색, 구현
정답자
아직 제출이 없습니다

문제

김상근 교수는 수치표를 만드는 새로운 컴퓨팅 엔진을 개발했다. 이 엔진은 한 변수 다항식 함수의 값을 계산한다.

예를 들어 다항식 함수가 f(x)=x2+2x+1f(x) = x^2 + 2x + 1이면, 엔진이 내놓는 값은 1 (=f(0))1\,(=f(0)), 4 (=f(1))4\,(=f(1)), 9 (=f(2))9\,(=f(2)), 16 (=f(3))16\,(=f(3)), 25 (=f(4))25\,(=f(4))이다.

그런데 상근이가 음주 코딩을 하다가 실수를 하는 바람에, 이 엔진은 항상 정확히 하나의 값만 잘못 출력한다. 그래서 위 다항식을 입력하면 1,4,9,16,251, 4, 9, 16, 25 대신 예를 들어 1,4,12,16,251, 4, 12, 16, 25가 나올 수 있다.

엔진이 출력한 값들이 주어졌을 때, 몇 번째 결과가 잘못 계산되었는지 구하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다.

각 테스트 케이스의 첫째 줄에는 다항식의 차수 dd가 주어진다. 예를 들어 4x5+3x+0.54x^5 + 3x + 0.5의 차수는 55이고, 2.4x+3.82.4x + 3.8의 차수는 11이다. dd는 55보다 작거나 같다.

다음 d+3d+3개의 줄에는 f(0),f(1),…,f(d+2)f(0), f(1), \dots, f(d+2)의 결과가 차례로 주어진다. 다항식 함수 ff 자체는 입력으로 주어지지 않는다. 모든 결과 값은 −100.0-100.0보다 크고 100.0100.0보다 작은 실수이다.

잘못 계산된 값은 항상 f(0),f(1),…,f(d+2)f(0), f(1), \dots, f(d+2) 중 하나이며, 올바른 값과의 오차는 1.01.0보다 크다. 컴퓨터의 소수 계산에서는 오차를 피할 수 없으므로 다른 값에도 오차가 있을 수 있으나, 그 오차는 매우 작아 10−610^{-6}을 넘지 않는다.

입력의 마지막 줄에는 00이 하나 주어진다.

출력

각 테스트 케이스에 대해, 잘못 계산된 값이 몇 번째 값인지 출력한다. f(i)f(i)의 결과가 잘못되었다면 ii를 출력한다.

예제2

  1. 예제 1

    입력
    2
    1.0
    4.0
    12.0
    16.0
    25.0
    1
    -30.5893962764
    5.76397083962
    39.3853798058
    74.3727663177
    4
    42.4715310246
    79.5420238202
    28.0282396675
    -30.3627807522
    -49.8363481393
    -25.5101480106
    7.58575761381
    5
    -21.9161699038
    -48.469304271
    -24.3188578417
    -2.35085940324
    -9.70239202086
    -47.2709510623
    -93.5066246072
    -82.5073836498
    0
    
    예상 출력
    2
    1
    1
    6
    
  2. 예제 2

    입력
    1
    -5.6737929123
    0.9573710935
    2.1645516008
    3.3717323057
    2
    -4.4575815635
    -5.2736246661
    -1.3840470388
    7.2111510432
    15.8843585195
    3
    0.4593424470
    1.9820544291
    -2.9543101092
    -8.5558137039
    -28.9549717393
    -64.9999993556
    0
    
    예상 출력
    0
    4
    2