재귀 함수 z

아직 제출이 없습니다시간 제한5초메모리 제한256 MB

문제

t=n/mt = n/m이라고 두고, 함수 zz를 다음과 같이 정의한다.

z[t]={a+(b+rt2)z[12t]r(t0)c+(d+rt2)z[12t]r(t>0)z[t] = \begin{cases} \dfrac{a + (b + r t^2)\, z[-1 - 2t]}{r} & (t \le 0) \\ \dfrac{c + (d + r t^2)\, z[1 - 2t]}{r} & (t > 0) \end{cases}

정수 aa, bb, cc, dd, nn, mm, rr가 주어지면 z[n/m]z[n/m]의 값을 구한다.

매개변수의 범위는 다음과 같다.

1nm1001 \le n \le m \le 100

1br,1dr,1r10001 \le b \le r, \quad 1 \le d \le r, \quad 1 \le r \le 1000

1a1000,1c10001 \le a \le 1000, \quad 1 \le c \le 1000

이 정의로 z[n/m]z[n/m]의 값은 항상 하나로 정해진다. 입력에 등장하는 모든 매개변수 집합은 z[n/m]104|z[n/m]| \le 10^4을 만족한다.

입력

첫째 줄에 값을 구해야 하는 함수의 개수가 주어진다. 이 개수는 1 이상 100 이하이다. 이어지는 각 줄에는 함수 하나의 정수 매개변수가 nn, mm, aa, bb, cc, dd, rr 순서로 공백을 두고 주어진다.

출력

각 매개변수 집합마다 한 줄에 z[n/m]z[n/m]의 값을 소수점 아래 여섯째 자리까지 반올림해 출력한다. 소수점 아래 여섯 자리는 값이 0이어도 모두 적는다. 반올림한 결과가 0이면 부호를 붙이지 않고 0.000000을 출력한다.