#18464: 為什麼測試執行AC,送出解答卻NA(語言沒錯)(cpp)


jadeyuanvincent@gmail.com (Jade Yuan)

學校 : 不指定學校
編號 : 99591
來源 : [123.195.12.44]
最後登入時間 :
2023-06-19 22:27:21
a006. 一元二次方程式 | From: [123.195.13.2] | 發表日期 : 2019-07-15 11:43

#include <iostream>
#include <math.h>
using namespace std;

int main()
{
int a=0,b=0,c=0;
int D=0;

while(cin >> a >> b >> c )
{
D=b*b-4*a*c;

if(D<0)
{
cout << "No real root" << endl;
}
else if(D==0)
{
cout << "Two same roots x=" << ((-b)+sqrt(D))/2*a << endl;
}
else
{
cout << "Two different roots x1=" << ((-b)+sqrt(D))/2*a <<" , x2=" << ((-b)-sqrt(D))/2*a <<endl;
}
}
return 0;
}

 
#18465: Re:為什麼測試執行AC,送出解答卻NA(語言沒錯)(cpp)


inversion (「我們所認識的可符香是個像天使的好女孩」之葉林 *Cries...)

學校 : 國立清華大學
編號 : 43537
來源 : [49.159.6.107]
最後登入時間 :
2022-05-28 19:29:12
a006. 一元二次方程式 | From: [49.158.83.43] | 發表日期 : 2019-07-15 16:18

#include
#include
using namespace std;

int main()
{
int a=0,b=0,c=0;
int D=0;

while(cin >> a >> b >> c )
{
D=b*b-4*a*c;

if(D<0)
{
cout << "No real root" << endl;
}
else if(D==0)
{
cout << "Two same roots x=" << ((-b)+sqrt(D))/2*a << endl;
}
else
{
cout << "Two different roots x1=" << ((-b)+sqrt(D))/2*a <<" , x2=" << ((-b)-sqrt(D))/2*a <<endl;

}
}
return 0;
}

藍色 部分應為「/ (2 * a)」而非「/ 2 * a」。

 

因為是要除以 2a 而不是 除以 2 再乘以 a ,您原本的寫法會變成後者的結果。(因為運算規則是:先乘除後加減,由左至右運算)


以上。希望有幫到您的忙。

 
#18469: Re:為什麼測試執行AC,送出解答卻NA(語言沒錯)(cpp)


jadeyuanvincent@gmail.com (Jade Yuan)

學校 : 不指定學校
編號 : 99591
來源 : [123.195.12.44]
最後登入時間 :
2023-06-19 22:27:21
a006. 一元二次方程式 | From: [123.195.13.2] | 發表日期 : 2019-07-16 11:48

#include
#include
using namespace std;

int main()
{
int a=0,b=0,c=0;
int D=0;

while(cin >> a >> b >> c )
{
D=b*b-4*a*c;

if(D<0)
{
cout << "No real root" << endl;
}
else if(D==0)
{
cout << "Two same roots x=" << ((-b)+sqrt(D))/2*a << endl;
}
else
{
cout << "Two different roots x1=" << ((-b)+sqrt(D))/2*a <<" , x2=" << ((-b)-sqrt(D))/2*a <<endl;

}
}
return 0;
}

藍色 部分應為「/ (2 * a)」而非「/ 2 * a」。

 

因為是要除以 2a 而不是 除以 2 再乘以 a ,您原本的寫法會變成後者的結果。(因為運算規則是:先乘除後加減,由左至右運算)


以上。希望有幫到您的忙。

謝謝您的協助!


 
ZeroJudge Forum