#4798: 不用double宣告也可以過關?


lolomonster (lolo)

學校 : 國立虎尾科技大學
編號 : 15897
來源 : [218.173.156.36]
最後登入時間 :
2011-01-29 21:40:25
a006. 一元二次方程式 | From: [218.173.163.181] | 發表日期 : 2011-01-25 10:16

#include<stdio.h>
#include<math.h>

int main()
{
 int a,b,c;
 int x1,x2,s;
 while(scanf("%d%d%d",&a,&b,&c)!=EOF)
 {
s=sqrt(b*b-4*a*c);
x1=(-b+s)/2/a;
x2=(-b-s)/2/a;
if(b*b-4*a*c<0){printf("No real root\n");}
else if(x1!=x2){printf("Two different roots x1=%d , x2=%d\n",x1,x2);}
else if(x1==x2){printf("Two same roots x=%d\n",x1);}
 }
 return 0;
}
 
試了一下 結果過關了....
不過int效率比快沒錯 目前2ms
希望有人提供更好的方法?或者我的方法能改進? 
 
#4803: Re:不用double宣告也可以過關?


cbs951214 (哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈...)

學校 : 康橋雙語學校
編號 : 11868
來源 : [1.162.186.8]
最後登入時間 :
2024-05-27 10:17:05
a006. 一元二次方程式 | From: [114.45.163.61] | 發表日期 : 2011-01-25 13:58

#include
 #include

int main()
{
 int a,b,c;
 int x1,x2,s;
 while(scanf("%d%d%d",&a,&b,&c)!=EOF)
 {
s=sqrt(b*b-4*a*c);
x1=(-b+s)/2/a;
x2=(-b-s)/2/a;
if(b*b-4*a*c<0){printf("No real root\n");}
else if(x1!=x2){printf("Two different roots x1=%d , x2=%d\n",x1,x2);}
else if(x1==x2){printf("Two same roots x=%d\n",x1);}
 }
 return 0;
}
 
試了一下 結果過關了....
不過int效率比快沒錯 目前2ms
希望有人提供更好的方法?或者我的方法能改進? 


PS: 答案均為整數,若有兩個根則大者在前

請看清楚題目

 
ZeroJudge Forum