読者です 読者をやめる 読者になる 読者になる

水面下の夢

競プロやイラストに興味があります.メインブログがここ.ソシャゲの話はこっち(http://ameblo.jp/0n0-yumechi/).ブログアイコンはYaQ(@8_9_00)さんから.

0004: Simultaneous Equation

回答

http://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=1577483#1


連立一次方程式を解けば良いので,公式を使って求めるだけでいいんですが…
参照:
http://www.h4.dion.ne.jp/~zero1341/t/02.htm
で,フォーマットにそって出力
参照:
http://www.k-cube.co.jp/wakaba/server/format.html



なんか,-0.000への対策が不足していたようで,最後にすごく小さな数字を足すことで調整できるんだそう.この誤差は許容してほしいものです….
この方のコードを参考にしました.
http://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=1153713



うーん,個人的にはこういう小さな数字を足して処理しなければいけないみたいなプログラムは余り書きたくないところ.(というか,人間の思考的やアルゴリズムの問題というより,コンピュータや処理系の問題というか…)
あとどういうテストケースで落ちているのか? がよくわからなかったので,非常に辛かったです.
5回位出し直したのかな.


あとEOFの処理をどうしたらいいんでしょうね,これ.
一旦getsしたものを保持して,if文で処理すれば,例外処理しなくても良さそうな気がする.(0除算も見越してめんどくさいので,例外処理にしてしまったのですが)

while true do
    begin
        littlenum = 0.000001
        a1, b1, c1, a2, b2, c2 = gets.split(" ").map(&:to_f)
        printf("%.3f %.3f\n", (b2 * c1 - b1 * c2) / (a1 * b2 - b1 * a2) + littlenum, (a1 * c2 - c1 * a2) / (a1 * b2 - b1 * a2) + littlenum)
    rescue
        break
    end
end