# Matrix# Basic Math# Determinant# Inverse Matrix

d623 - 反方陣

🔗 前往 ZeroJudge 原題

題目描述

題目要求計算一個 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";
	}
}

Discussion