수 맞히기 게임

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

문제

원욱이와 성제는 수 맞히기 게임을 하고 있다. 게임은 다음과 같이 진행된다.

  1. 원욱이가 xx 이상 yy 이하의 정수 중에서 하나를 선택한다. 선택한 정수를 kk라고 하자. 성제는 xxyy가 얼마인지는 알지만, kk의 값은 모른다.
  2. 성제가 xx 이상 yy 이하의 정수 중 하나를 부른다. 이것을 질문 11회로 간주한다. 만약 부른 정수가 kk와 같다면 즉시 게임이 끝난다.
  3. 성제가 부른 정수가 kk와 다르다면 원욱이는 성제에게 부른 정수가 kk보다 큰지 작은지 알려준다.
  4. 게임이 끝날 때까지 2, 3번 과정을 반복한다.

여러 번 게임을 한 후, 성제는 질문 횟수를 줄이기 위해 다음과 같은 전략을 세웠다.

  • kk가 될 수 있는 범위가 aa 이상 bb 이하일 때, 구간 \[max(a,a+b21),min(b,a+b2+1)]\[\max(a,\lceil\frac{a+b}{2}-1\rceil),\min(b,\lfloor\frac{a+b}{2}+1\rfloor)]에서 임의로 정수 하나를 뽑아서 그 수를 부른다. 구간에서 각각의 정수가 뽑힐 확률은 동일하다.

여러분은 성제의 전략이 얼마나 효과가 있는지 알아내야 한다. 주어지는 xx, yy, kk에 대하여 게임이 끝날 때까지 성제가 한 질문 횟수의 기댓값을 구하자!

입력

첫째 줄에 게임의 횟수 NN이 입력된다. (1N100,000)(1 \le N \le 100\\,000)

다음 NN개의 줄에는 각 게임에서 정해진 세 정수 xx, yy, kk가 입력된다. (1,200xky1,200)(-1\\,200 \le x \le k \le y \le 1\\,200)

출력

NN개의 줄에 각 게임에서 성제가 한 질문 횟수의 기댓값을 하나씩 출력한다. 출력한 답과 정답의 절대/상대 오차가 10710^{-7} 이하이면 정답이다.