100 - Simulation of Chemicals 解説 /

実行時間制限: 3 sec / メモリ制限: 1024 MB

配点: 1000

問題文

i = 1, 2, \dots, Q に対して、以下の問題を解いてください。

試験管に 3 種類の物質 A, B, C がそれぞれ a, b, c グラム入っているとき、次の 1 秒間で以下のような変化が起こります。

  • 物質 A のうち aX_i グラムが物質 C に変化する
  • 物質 B のうち bY_i グラムが物質 A に変化する
  • 物質 C のうち cZ_i グラムが物質 B に変化する

すなわち、1 秒後の物質 A, B, C の量は、それぞれ a(1-X_i) + bY_i, b(1-Y_i) + cZ_i, c(1-Z_i) + aX_i グラムになります。

最初、試験管に物質 A, B, C が 1 グラムずつ入っています。T_i 秒後の物質 A, B, C の量がそれぞれ何グラムになるかを求めるプログラムを作成してください。

制約

  • 1 \leqq Q \leqq 10^4
  • 0 \leqq X_i, Y_i, Z_i \leqq 1
  • 1 \leqq T_i \leqq 10^7
  • X, Y, Z は実数で、最大で小数点以下 7 桁まで与えられる
  • T は整数

入力

入力は以下の形式で標準入力から与えられます。

Q
X_1 Y_1 Z_1 T_1
X_2 Y_2 Z_2 T_2
 \vdots
X_Q Y_Q Z_Q T_Q

出力

i \ (1 \leqq i \leqq Q) 番目の問題における、T_i 秒後の物質 A, B, C の量を a'_i, b'_i, c'_i とするとき、次の形式で出力してください。

a'_1 b'_1 c'_1
a'_2 b'_2 c'_2
 \vdots
a'_Q b'_Q c'_Q

ただし、正解との絶対誤差が 10^{-7} 以下であるような答えを出力すれば、正答とみなされます。


入力例 1

5
0.10 0.20 0.30 2
0.02 0.03 0.01 3
0.50 0.00 0.00 16
0.20 0.70 0.60 12345
1.00 1.00 1.00 10000000

出力例 1

1.210000000000000 1.120000000000000 0.670000000000000
1.027637000000000 0.942080000000000 1.030283000000000
0.000015258789062 1.000000000000000 1.999984741210938
1.852941176470589 0.529411764705882 0.617647058823530
1.000000000000000 1.000000000000000 1.000000000000000

まず、1 番目の問題 (X = 0.1, Y = 0.2, Z = 0.3, T = 2) では、次のように物質の量が変化していきます。

  • 最初、物質 A, B, C の量はそれぞれ 1, 1, 1 グラム
  • 1 秒後、物質 A, B, C の量はそれぞれ 1.1, 1.1, 0.8 グラムになる
  • 2 秒後、物質 A, B, C の量はそれぞれ 1.21, 1.12, 0.67 グラムになる

次に、2 番目の問題 (X = 0.01, Y = 0.02, Z = 0.03, T = 3) では、次のように物質の量が変化していきます。

  • 最初、物質 A, B, C の量はそれぞれ 1, 1, 1 グラム
  • 1 秒後、物質 A, B, C の量はそれぞれ 1.01, 0.98, 1.01 グラムになる
  • 2 秒後、物質 A, B, C の量はそれぞれ 1.0192, 0.9607, 1.0201 グラムになる
  • 3 秒後、物質 A, B, C の量はそれぞれ 1.027637, 0.942080, 1.030283 グラムになる

残りの 3, 4, 5 番目の問題についても答えれば、正解となります。ただし、3 番目の物質 A の量を 1.525879e-5 といった指数形式で出力しないようにしてください。