(2013)一元二次方程ⅱ
description
求一元二次方程ax
2+bx
+c=0
的解。a,b,c為任意實數。
input
輸入資料有一行,包括a b c的值。
output
按以下格式輸出方程的根x1和x2。x1和x2之間有乙個空格。 x1 x2
(1)如果x1和x2為實根,則以x1>=x2輸出。
(2)如果方程是共軛復根,x1=m+ni,x2=m-ni,其中n>0。 其中x1, x2, m,n均保留2位小數。
sample input
1 2 3
sample output
-1.00+1.41i -1.00-1.41i
[參考解答]
#include
#include
int main ( )
else
return
0;}
完善:以上結果提交oj順利通過,儘管自知對共軛復根處的處理有點太簡單,但通過了,也樂得不追究了。
今天(2023年10月13日)上機課上,崔翔童鞋問我,題目中有「(2)如果方程是共軛復根……,其中n>0」,那個n>0怎麼整,驚出一身冷汗:老賀想逃避,休想!
讀上面的程式,其實可以看到,當a<0時,共軛復根的虛部pi<0,於是輸出的結果,就會很難看。確切的說,是錯的!
如下圖:
這樣的輸出,太低階了。我們想要的是:
但是,最愛在輸出格式上和人較勁的oj,是怎麼容忍這樣的錯誤的?很簡單,沒有提供a<0時的測試資料,自然就讓人能蒙混過關了。oj啊,你那嚴格的名聲來之不易,咋能不珍惜呢?
不管你oj了,老賀決定認真點。你讓人犯錯,咱也不降低對自己的要求了。上**:
#include
#include
int main ( )
else
else
}return
0;}
其實,考慮共軛復根的對稱性,可以如下省點**(讀起來難懂,就執行觀察觀察,再想想):
#include
#include
int main ( )
else
return
0;}
C語言OJ專案參考 1034 求值
1034 求值 description 求sn 1 2 3 4 5 n 之值,其中n是乙個數字。input noutput 和sample input 5sample output 153 參考解答 include int main printf ld sum return 0 本題中未指定n的大小...
C語言OJ專案參考 1942 進製轉換
description 輸入乙個十進位制數n,將它轉換成r進製數輸出。input 輸入資料報含多個測試例項,每個測試例項包含兩個整數n 32位整數 和r 2 r 16,r 10 outputt 為每個測試例項輸出轉換後的數,每個輸出佔一行。如果r大於10,則對應的數字規則參考16進製制 比如,10用...
C語言OJ專案參考 1942 進製轉換
description 輸入乙個十進位制數n,將它轉換成r進製數輸出。input 輸入資料報含多個測試例項,每個測試例項包含兩個整數n 32位整數 和r 2 r 16,r 10 outputt 為每個測試例項輸出轉換後的數,每個輸出佔一行。如果r大於10,則對應的數字規則參考16進製制 比如,10用...