Untitled Web Page

とある高専生の割と誰得なウェブページです。

Problem 0004:Simultaneous Equation

問題

Simultaneous Equation

連立方程式

ax + by = c
dx + ey = f

の解、x, y を出力して終了するプログラムを作成して下さい。a, b, c, d, e, f はそれぞれ、 -1000 以上 1000 以下の実数とし、連立方程式の解が一意に存在するように与えれれるものとします。

Input

複数のデータセットが与えられます。入力の最後まで処理して下さい。1つのデータセットが1行に与えられます。1つのデータセットに a, b, c, d, e, f が1つのスペースで区切られて与えられます。

Output

各データセットに対して、x, y を1つのスペースで区切って1行に出力して下さい。各値は小数点以下第3位まで出力して下さい。小数点以下第4位を四捨五入して下さい。

Sample Input

1 2 3 4 5 6
2 -1 -2 -1 -1 -5

Output for the Sample Input

-1.000 2.000
1.000 4.000

解法:愚直

この連立方程式を解くと次のようになる。

y = \frac{cd-af}{bd-ae}, x = -\frac{b}{a}y + \frac{c}{a}

これを <iomanip>setprecision()setiosflags() を用いて表示させた。(数式画像の作成は数式画像作成ツールを用いた)

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
   double a, b, c, d, e, f, x, y;
   while (cin >> a >> b >> c >> d >> e >> f)
   {
      if (cin.eof()) break;
      y = (c*d - a*f) / (b*d - a*e);
      x = -b/a * y + c/a;
      cout << setprecision(3) << setiosflags(ios::fixed) << x << " " << y << endl;
   }
   return 0;
}