#17292: 為甚麼測試時是AC,但解是NA


karta1447452 (jack)

學校 : 桃園市私立復旦高級中學
編號 : 94136
來源 : [39.13.39.55]
最後登入時間 :
2019-09-09 22:20:11
a006. 一元二次方程式 | From: [39.13.198.180] | 發表日期 : 2019-04-03 20:09

#include<iostream>
#include <cmath>
using namespace std;
int main()
{
int a,b,c,x1,x2;
double i;
while(cin >> a >> b >> c)
{
i = sqrt(b*b-4*a*c);
if(i>0)
{
x1 = (-b+i)/2*a;
x2 = (-b-i)/2*a;
cout << "Two different roots x1=" << x1 << " , x2=" << x2 << endl;
}
else if(i==0)
{
x1 = -b/2*a;
cout << "Two same roots x=" << x1 << endl;
}
else
{
cout << "No real root" << endl;
}
}
return 0;
}
 
#17298: Re:為甚麼測試時是AC,但解是NA


freedom501999@gmail.com (帥氣魔方生)

學校 : 不指定學校
編號 : 88611
來源 : [39.8.203.54]
最後登入時間 :
2019-05-30 22:56:25
a006. 一元二次方程式 | From: [27.52.129.54] | 發表日期 : 2019-04-04 09:55

#include
#include
using namespace std;
int main()
{
int a,b,c,x1,x2;
double i;
while(cin >> a >> b >> c)
{
i = sqrt(b*b-4*a*c);
if(i>0)
{
x1 = (-b+i)/2*a;
x2 = (-b-i)/2*a;
cout << "Two different roots x1=" << x1 << " , x2=" << x2 << endl;
}
else if(i==0)
{
x1 = -b/2*a;
cout << "Two same roots x=" << x1 << endl;
}
else
{
cout << "No real root" << endl;
}
}
return 0;
}

你先把判別式開根號了

如果判別式是負的,開根號會有問題,所以不應該先開

若判別式小於 0,不用開根號直接輸出無解,等於0也不用算根號

只有判別式大於0才要算根號值

 
ZeroJudge Forum