名もなき未知

エンジニアリングとか、日常とかそういうのをまとめる場所。アクセス解析のためGAを利用、Googleに情報を送信しています。商品紹介のためAmazonアフィリエイトを利用、Amazonに情報を送信しています。記事に関しては私が書いていない引用文を除いて自由にご利用ください。

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