#11493: 第五測資點為什麼錯


jason900102 (unknown)

學校 : 臺中市私立立人高級中學
編號 : 61132
來源 : [210.60.247.91]
最後登入時間 :
2017-03-09 12:48:06
a006. 一元二次方程式 | From: [118.163.193.60] | 發表日期 : 2016-11-02 13:11

#include<iostream>
#include<math.h>
using namespace std;
int main(){
int a,b,c,d,e;
while(cin>>a>>b>>c){
d=(-b+sqrt(b*b-4*a*c))/2*a;
e=(-b-sqrt(b*b-4*a*c))/2*a;
if((b*b-4*a*c)>0){

cout<<"Two different roots x1="<<d<<" , x2="<<e<<endl;

}else if((b*b-4*a*c)==0){
cout<<"Two same roots x="<<d<<endl;

}else{
cout<<"No real root"<<endl;

}



}
return 0;
}

 
#11524: Re:第五測資點為什麼錯


jack60126 (hadman)

學校 : 不指定學校
編號 : 61894
來源 : [110.27.69.64]
最後登入時間 :
2016-11-29 21:55:51
a006. 一元二次方程式 | From: [110.30.9.128] | 發表日期 : 2016-11-14 15:49

#include
#include
using namespace std;
int main(){
int a,b,c,d,e;
while(cin>>a>>b>>c){
d=(-b+sqrt(b*b-4*a*c))/2*a;
e=(-b-sqrt(b*b-4*a*c))/2*a;
if((b*b-4*a*c)>0){

cout<<"Two different roots x1="<<d<<" , x2="<<e<<endl;

}else if((b*b-4*a*c)==0){
cout<<"Two same roots x="<<d<<endl;

}else{
cout<<"No real root"<<endl;

}



}
return 0;
}

重根的時候 直接-b/2*a 就好了 能自己算的別依賴電腦 畢竟他是瑕疵品

 

 
#11561: Re:第五測資點為什麼錯


zzxxxcccc (node)

學校 : 明新科技大學
編號 : 62118
來源 : [1.34.231.24]
最後登入時間 :
2022-03-20 17:01:10
a006. 一元二次方程式 | From: [36.228.227.211] | 發表日期 : 2016-11-24 20:39

#include
#include
using namespace std;
int main(){
int a,b,c,d,e;
while(cin>>a>>b>>c){
d=(-b+sqrt(b*b-4*a*c))/2*a;
e=(-b-sqrt(b*b-4*a*c))/2*a;
if((b*b-4*a*c)>0){

cout<<"Two different roots x1="<<d<<" , x2="<<e<<endl;

}else if((b*b-4*a*c)==0){
cout<<"Two same roots x="<<d<<endl;

}else{
cout<<"No real root"<<endl;

}



}
return 0;
}


別亂答

程式語言要是有這麼簡單的bug 那麼真的世界上一堆系統bug修不掉了

 

我剛才也遇到 雖然強迫用 假如是重根的時候答案是-4那強迫輸出-1 但這是作弊

實際上的解決方法是分析錯誤 

所以先用小技巧讓軟體輸出測試點五的A B C輸入內容

得知輸入內容是 2 4 2

手算後發現 (-4 + 0 ) / 2*2  一般人認為*法優先序大於/ 實際上是同優先權 所以它實際會變成 -4 先/2  在*2  所以答案是 -4

解決方式是 底下  2*a 那邊要括號起來  讓他先做乘法運算 在除法運算 -4 / 2*2 => -4/4 => -1

Finished.

 
#13050: Re:第五測資點為什麼錯


fok1408 (好想學c++)

學校 : 不指定學校
編號 : 46016
來源 : [36.239.57.136]
最後登入時間 :
2018-07-01 19:40:08
a006. 一元二次方程式 | From: [36.236.19.160] | 發表日期 : 2017-11-25 19:35

#include
#include
using namespace std;
int main(){
int a,b,c,d,e;
while(cin>>a>>b>>c){
d=(-b+sqrt(b*b-4*a*c))/2*a;
e=(-b-sqrt(b*b-4*a*c))/2*a;
if((b*b-4*a*c)>0){

cout<<"Two different roots x1="<<d<<" , x2="<<e<<endl;

}else if((b*b-4*a*c)==0){
cout<<"Two same roots x="<<d<<endl;

}else{
cout<<"No real root"<<endl;

}



}
return 0;
}


別亂答

程式語言要是有這麼簡單的bug 那麼真的世界上一堆系統bug修不掉了

 

我剛才也遇到 雖然強迫用 假如是重根的時候答案是-4那強迫輸出-1 但這是作弊

實際上的解決方法是分析錯誤 

所以先用小技巧讓軟體輸出測試點五的A B C輸入內容

得知輸入內容是 2 4 2

手算後發現 (-4 + 0 ) / 2*2  一般人認為*法優先序大於/ 實際上是同優先權 所以它實際會變成 -4 先/2  在*2  所以答案是 -4

解決方式是 底下  2*a 那邊要括號起來  讓他先做乘法運算 在除法運算 -4 / 2*2 => -4/4 => -1

Finished.



感謝

 
#13897: Re:第五測資點為什麼錯


tom12378 (CodeHunter)

學校 : 高雄市立高雄高級中學
編號 : 66465
來源 : [1.200.115.133]
最後登入時間 :
2021-02-12 23:35:19
a006. 一元二次方程式 | From: [180.217.197.107] | 發表日期 : 2018-05-13 00:01

#include
#include
using namespace std;
int main(){
int a,b,c,d,e;
while(cin>>a>>b>>c){
d=(-b+sqrt(b*b-4*a*c))/2*a;
e=(-b-sqrt(b*b-4*a*c))/2*a;
if((b*b-4*a*c)>0){

cout<<"Two different roots x1="<<d<<" , x2="<<e<<endl;

}else if((b*b-4*a*c)==0){
cout<<"Two same roots x="<<d<<endl;

}else{
cout<<"No real root"<<endl;

}



}
return 0;
}


別亂答

程式語言要是有這麼簡單的bug 那麼真的世界上一堆系統bug修不掉了

 

我剛才也遇到 雖然強迫用 假如是重根的時候答案是-4那強迫輸出-1 但這是作弊

實際上的解決方法是分析錯誤 

所以先用小技巧讓軟體輸出測試點五的A B C輸入內容

得知輸入內容是 2 4 2

手算後發現 (-4 + 0 ) / 2*2  一般人認為*法優先序大於/ 實際上是同優先權 所以它實際會變成 -4 先/2  在*2  所以答案是 -4

解決方式是 底下  2*a 那邊要括號起來  讓他先做乘法運算 在除法運算 -4 / 2*2 => -4/4 => -1

Finished.



感謝

大推

我也遇到一樣的問題解不開,結果只是簡單的數學邏輯

太感謝啦

 
ZeroJudge Forum