# Math# Square Root# Conditional Statement

a453 - TOI2010 第一題:一元二次方程式

🔗 前往 ZeroJudge 原題

題目描述

題目要求判斷一元二次方程式 ax^2 + bx + c = 0 的兩個解是否都是有理數。給定多組測試資料,每組資料包含三個整數 a, b, c,判斷判別式 b^2 - 4ac 的平方根是否為整數。如果平方根是整數,則表示兩個解都是有理數,輸出 "Yes",否則輸出 "No"。

解題思路

解題的核心在於判斷判別式 b^2 - 4ac 的平方根是否為整數。如果平方根是整數,則表示方程式的解是有理數。程式碼中使用了 sqrt() 函數計算平方根,然後將計算結果與其轉換為整數的值進行比較。如果兩者相等,則表示平方根是整數。

複雜度分析

  • 時間複雜度: O(N) (N 是測試資料組數)
  • 空間複雜度: O(1)

程式碼

#include <stdio.h>
#include <cmath>
using namespace std;
main(){
	int a,b,c,n;
	scanf("%d",&n);
	while(n--){
		scanf("%d%d%d",&a,&b,&c);
		(sqrt(b*b-a*4*c)==int(sqrt(b*b-a*4*c)))?printf("Yes\n"):printf("No\n"); 
	}
}

Discussion