큐브러버

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

요약
수열이 주어질 때, 모든 위치 i에서 x_i = a*i^3 + b*i^2 + c*i + d를 만족하는 실수 계수 a, b, c, d가 존재하는지 판정한다.
난이도

보통10점 중 4점

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

문제

지학이는 3차 다항식(cubic polynomial)을 좋아하는, 잘 알려진 큐브러버(cubelover)이다.

어느 화창한 봄날, 지학이는 아파트 놀이터에서 승현이가 길이 nn 의 정수 수열 x1,x2,…,xnx_1, x_2, \ldots, x_n 을 가지고 노는 것을 보았다. 지학이는 그 아파트의 짱이었고, 승현이보다 45일이나 먼저 태어난 형이었다. 지학이는 승현이를 보자마자 그 수열을 빼앗아 갔다.

승현이가 그 자리에서 엉엉 울기 시작하자, 마음이 약해진 지학이는 승현이가 1≤i≤n1 \le i \le n 인 모든 정수 ii 에 대해

xi=ai3+bi2+ci+dx_i = a i^3 + b i^2 + c i + d

를 만족하는 실수 aa, bb, cc, dd 를 찾으면 수열을 돌려주겠다고 약속했다. (엄밀히 말하면 3차 다항식은 a≠0a \ne 0 이어야 하지만, 지학이는 그 정도로 엄격하게 굴 생각은 없어서 a=0a = 0 도 허용한다.)

간만에 학교 밖으로 나와 외출을 즐기던 당신은, 울고 있는 승현이와 눈이 마주쳤다. 승현이는 당신에게 곧장 달려와, 그러한 실수 aa, bb, cc, dd 를 빨리 찾아 달라고 졸랐다. 당신은 과연 승현이의 눈물을 닦아 줄 수 있는가?

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 첫 번째 줄에 테스트 케이스의 개수 TT (1≤T≤10001 \le T \le 1000) 가 주어진다.

이후 TT 개의 줄에 각 테스트 케이스가 주어진다. 각 줄은 수열의 길이인 정수 nn (1≤n≤5001 \le n \le 500) 으로 시작하고, 이어서 nn 개의 정수가 주어진다. 그중 ii 번째 정수가 xix_i (0≤xi≤50 000 0000 \le x_i \le 50\,000\,000) 이다.

출력

각 테스트 케이스마다, xi=ai3+bi2+ci+dx_i = a i^3 + b i^2 + c i + d 를 만족하는 실수 aa, bb, cc, dd 가 존재하면 YES 를, 존재하지 않으면 NO 를 한 줄에 하나씩 출력한다.

힌트

첫 번째 테스트 케이스에서 가능한 답 중 하나는 a=0a = 0, b=0b = 0, c=0c = 0, d=3d = 3 이다.

예제1

  1. 예제 1

    입력
    3
    1 3
    5 0 1 2 3 4
    5 0 1 2 4 5
    
    예상 출력
    YES
    YES
    NO