d623 - 反方陣
題目描述
題目要求計算一個 2x2 矩陣的反矩陣。如果矩陣的行列式為 0,則輸出 "cheat!",否則輸出反矩陣的元素,保留五位小數。輸入以四個 0 作為結束標記。
解題思路
計算 2x2 矩陣的反矩陣的公式如下:
如果矩陣為 [[a, b], [c, d]],且行列式 det = a*d - b*c 不為 0,則反矩陣為 [[d/det, -b/det], [-c/det, a/det]]。
程式碼直接實現了這個公式,並處理了行列式為 0 的情況。
複雜度分析
- 時間複雜度: O(1)
- 空間複雜度: O(1)
程式碼
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
double a,b,c,d;
while(cin >> a >> b >> c >> d){
if(a==0&&b==0&&c==0&&d==0)break;
double detA=a*d-b*c;
(detA==0)?cout << "cheat!\n":cout << fixed << setprecision(5) << d/detA << " " << -b/detA << "\n" << -c/detA << " " << a/detA << "\n";
}
}