a453 - TOI2010 第一題:一元二次方程式
題目描述
題目要求判斷一元二次方程式 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");
}
}