a006: 一元二次方程序
这篇教学会示范 ZeroJudge 基础题库“a006: 一元二次方程序”的解题过程。
题目需求
求一元二次方程序 ax2+bx+c=0 的根 ( 测试时会提供以空白隔开的 a, b, c 三个整数 )。
题目链接:a006: 一元二次方程序
解答
参考维基百科“一元二次方程序”,可以透过下列的公式,得到 x1 和 x2 的数值。
首先使用 map 拆分出题目给予的 a、b、c 三个数字,由于 a 为分母不能为 0,所以先判断 a 是否为 0,如果 a 不为 0 才开始套用公式,套用公式后会再继续判断开根号内的数字,因为开根号内的数字必须大于等于 0,所以如果小于 0 也会回传 No real root 的文字,除此之外,只要带入公式都能求出 x1 和 x2 的数值。
a,b,c = map(int, input().split(' ')) # 拆分輸入的字串,轉換成數字提供給變數 a、b、c
if a !=0: # 如果 a 不等於 0
r = b**2 - 4*a*c # 計算開根號內的數值
if r>0: # 如果開根號內的數值大於 0
x1 = int((b*-1 + r**0.5)/(2*a)) # 套用公式求出 x1
x2 = int((b*-1 - r**0.5)/(2*a)) # 套用公式求出 x2
if x1>x2: # 根據題目輸出結果
print(f'Two different roots x1={x1} , x2={x2}')
else:
print(f'Two different roots x1={x2} , x2={x1}')
elif r == 0:
x = int((b*-1 + r**0.5)/(2*a))
print(f'Two same roots x={x}') # 根據題目輸出結果
else: # 如果開根號內的數值小於 0
print('No real root')
else: # 如果 a 等於 0
print('No real root')
微信扫码关注
抖音扫码关注