這道題其實考察的是對字串的處理。
顯然我們要將方程化為ax2+bx+c=0的形式,因此可以找出式子中所有x2、x的係數以及c。但是題目的輸入是乙個完整的字串,如果暴力遍歷的話會很麻煩,於是就想到把式子中的x2, x, c分開來。這用python其實很方便(其他語言不清楚,c/c++可能暴力會更簡單)。
用python 40+行就能解決這道題。
def
getnumber
(string, str_to_remove)
:"""
這個函式用來刪除string的字尾如'x^2'/'x',然後將數字部分返回
刪除字串可以用strip()
也可以用replace()
這裡之所以還單獨寫乙個函式,是因為可能有這種情:'x^2'
這種情況刪除字尾後會變成空串'',到時int()會出錯
"""if string == str_to_remove:
return1if
len(string)
==len
(str_to_remove)+1
:if string[0]
=='-'
:return-1
return
int(string.rstrip(str_to_remove)
)return
int(string.rstrip(str_to_remove)
)while
true
:try
: line =
input()
.strip(
).split(
'=')
left = line[0]
.replace(
'+',
' ')
.replace(
'-',
' -'
).split(
) right = line[1]
.replace(
'+',
' ')
.replace(
'-',
' -'
).split(
) a, b, c =,,
for string in left:
if'x^2'
in string:
'x^2'))
elif
'x'in string:
'x')
)else
:int
(string)
)for string in right:
if'x^2'
in string:
-getnumber(string,
'x^2'))
elif
'x'in string:
-getnumber(string,
'x')
)else:-
int(string)
)
a, b, c =
sum(a)
,sum
(b),
sum(c)
if a ==0:
print
("%.2f %.2f"%(
-c/b,
-c/b)
)elif b**2-
4*a*c <0:
print
("no solution"
)else
: tmp =
(b**2-
4*a*c)
**0.5
ans =
sorted([
(-b+tmp)/(
2*a),(
-b-tmp)/(
2*a)])
print
("%.2f %.2f"
%(ans[0]
, ans[1]
))except
:break
牛客網計算機考研複試 KY30 進製轉換
點這裡題目描述 將乙個長度最多為30位數字的十進位製非負整數轉換為二進位制數輸出。思路 模擬十進位制轉為二進位制的過程,用string儲存該數,遍歷這個string,每次保留模2的數,然後除2就行。如十進位制123 十進位制 除二 模二 123 61 1 061 30 1 030 15 0 015 ...
牛客網計算機考研複試 KY8 整數拆分
點這裡題目描述 乙個整數總可以拆分為2的冪的和,例如 7 1 2 4 7 1 2 2 2 7 1 1 1 4 7 1 1 1 2 2 7 1 1 1 1 1 2 7 1 1 1 1 1 1 1 總共有六種不同的拆分方式。再比如 4可以拆分成 4 4,4 1 1 1 1,4 2 2,4 1 1 2。用...
牛客網計算機考研複試 KY3 約數的個數
點這裡題目描述 輸入n個整數,依次輸出每個數的約數的個數 思路1 對每乙個數計算其公約數,遍歷1到sqrt n 之間的數。1 include using namespace std int main cout cnt endl return 0 思路2 當n非常大的時候,第一種方法顯然會超時,這時我...