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


jadeyuanvincent@gmail.com (Jade Yuan)


#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...)


#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)


#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 ,您原本的寫法會變成後者的結果。(因為運算規則是:先乘除後加減,由左至右運算)


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

謝謝您的協助!