pekempeyのブログ

競技プログラミングに関する話題を書いていきます。

yukicoder No.328 きれいな連立方程式

ただの数学だった。 Wolfram Alpha に投げれば解が求まる気がしたけど、本当に求まるらしい。 あのサイトどういう仕組みになってるんだろう。

問題文

http://yukicoder.me/problems/703

解法

$ c_1 c_3 - c_2^2 \ne 0 $ という条件があるので、おそらくこの式は必要。 とりあえず計算してみる。

$$ c_1 c_3 - c_2^2=p_1 p_2 (z_1-z_2)^2 $$

他にも似たような式を計算してみる。

$$ c_1 c_4 - c_2 c_3 = p_1 p_2 (z_1 + z_2)(z_1-z_2)^2 $$ $$ c_2 c_4 - c_3^2=p_1 p_2 z_1 z_2 (z_1-z_2)^2 $$

これらの式を使えば

$$ z_1 + z_2=\frac{c_1 c_4 - c_2 c_3}{c_1 c_3 - c_2^2}, \quad z_1 z_2 = \frac{c_2 c_4 - c_3^2}{c_1 c_3 - c_2^2} $$

と計算できる。

$z_1$ と $z_2$ は二次方程式 $t^2-(z_1+z_2)t+z_1z_2=0$ の解である。 そのため、虚数かどうかを判別するには判別式の正負を見ればいい。

yukicoder No.328 きれいな連立方程式

z1+z2 を正しく求めるのに相当時間を掛けてしまった。 判別式間違えてるし、 a3+b3因数分解を間違えてるしで中々辛い。 式変形力不足を感じる。