# Linear Algebra# Equation Solving# Conditional Logic

a410 - 解方程

🔗 前往 ZeroJudge 原題

題目描述

題目要求解一個二元一次方程組: ax + by = c dx + ey = f 如果方程組無解,輸出 "No answer"。 如果方程組有無限多解,輸出 "Too many"。 如果方程組有唯一解,輸出 x 和 y 的值,保留兩位小數。

解題思路

解二元一次方程組可以使用多種方法,例如代入法、消元法或克拉瑪公式。此程式碼使用消元法來判斷解的情況並計算解。 首先,檢查係數是否成比例,如果 ae == bd 且 af == cd,則表示有無限多解,輸出 "Too many"。 其次,檢查 a/d 是否等於 b/e,如果相等但 a/d 不等於 c/f,則表示無解,輸出 "No answer"。 最後,如果滿足以上條件,則計算 x 和 y 的值,並輸出結果,保留兩位小數。計算公式基於克拉瑪公式或消元法的結果。

複雜度分析

  • 時間複雜度: O(1)
  • 空間複雜度: O(1)

程式碼

#include <stdio.h>
int main(){
	float a,b,c,d,e,f;
	scanf("%f%f%f%f%f%f",&a,&b,&c,&d,&e,&f);
		if(a*e==b*d&&a*f==c*d)
			printf("Too many");
		else if(a/d==b/e&&a/d!=c/f)
			printf("No answer");
		else if((a*e-d*b)!=0)
			printf("x=%.2f\ny=%.2f",(c*e-f*b)/(a*e-d*b),(c*d-f*a)/(b*d-e*a));
		else
			printf("Too many");
}

Discussion