b514 - 解二元一次聯立方程式之根-商競103
題目描述
題目要求解二元一次聯立方程式 ax + by = c 和 dx + ey = f 的解。輸入包含多組測試資料,每組資料包含六個整數 a, b, c, d, e, f,代表聯立方程式的係數。輸出每組資料對應的 x 和 y 的值。題目保證輸入的方程式有唯一解,且解為整數。
解題思路
題目要求解二元一次聯立方程式,可以使用克拉瑪公式 (Cramer's rule) 求解。克拉瑪公式的解法如下:
x = (ce - bf) / (ae - bd) y = (cd - af) / (bd - ae)
程式碼直接套用克拉瑪公式計算 x 和 y 的值,並輸出結果。
複雜度分析
- 時間複雜度: O(n)
- 空間複雜度: O(1)
程式碼
#include <iostream>
int main() {
int n,a,b,c,d,e,f;
std::cin>>n;
for(;n>0;n--){
std::cin>>a>>b>>c>>d>>e>>f;
std::cout<<(c*e-b*f)/(a*e-b*d)<<" "<<(c*d-a*f)/(b*d-a*e)<<"\n";
}
}