洛谷 P1022 計算器的改良

2021-08-02 02:52:10 字數 1294 閱讀 8412

題目背景

ncl是一家專門從事計算器改良與公升級的實驗室,最近該實驗室收到了某公司所委託的乙個任務:需要在該公司某型號的計算器上加上解一元一次方程的功能。實驗室將這個任務交給了乙個剛進入的新手zl先生。

題目描述

為了很好的完成這個任務,zl先生首先研究了一些一元一次方程的例項:

4+3x=8

6a-5+1=2-2a

-5+12y=0

zl先生被主管告之,在計算器上鍵入的乙個一元一次方程中,只包含整數、小寫字母及+、-、=這三個數學符號(當然,符號「-」既可作減號,也可作負號)。方程中並沒有括號,也沒有除號,方程中的字母表示未知數。

你可假設對鍵入的方程的正確性的判斷是由另乙個程式設計師在做,或者說可認為鍵入的一元一次方程均為合法的,且有唯一實數解。

輸入輸出格式

輸入格式:

乙個一元一次方程。

輸出格式:

解方程的結果(精確至小數點後三位)。

輸入輸出樣例

輸入樣例#1:

6

a-5+1=2-2

a

輸出樣例#1:

a=0.750
用f表示在等號左邊還是右邊,s標記前面的符號為正還是負,遇到不是數字和符號的字元即為未知數

var x,y,n,s,f:longint;

ch,t:char;

begin

f:=1;s:=1;

while not eoln do

begin

read(ch);

if (ch='+') then begin

y:=y-f*s*n;

s:=1;

n:=0;

endelse

if (ch='-') then

begin

y:=y-f*s*n;

n:=0;s:=-1;

endelse

if (ch='=') then

begin

y:=y-f*s*n;

n:=0;s:=1;

f:=-1;

endelse

if (ch<'0')or(ch>'9') then

begin

t:=ch;

x:=x+f*s*n;

n:=0;

endelse n:=n*10+ord(ch)-48;

end;

y:=y-f*s*n;

write(t,'=',y/x:0:3);

end.

洛谷 P1022 計算器的改良

題目背景ncl是一家專門從事計算器改良與公升級的實驗室,最近該實驗室收到了某公司所委託的乙個任務 需要在該公司某型號的計算器上加上解一元一次方程的功能。實驗室將這個任務交給了乙個剛進入的新手zl先生。題目描述 為了很好的完成這個任務,zl先生首先研究了一些一元一次方程的例項 4 3x 8 6a 5 ...

洛谷 P1022 計算器的改良

題目 計算器的改良 思路 把方程以 為界拆成兩段,對於每一段假設前面沒有 號,就新增乙個 號,且每一段的結尾加乙個 號。再把兩段的未知數係數和常數項合併,移項,化係數為1求得。注意當常數項為0時要特殊處理,避免出現精度問題。includeusing namespace std string a in...

洛谷P1022(計算器的改良)

ncl是一家專門從事計算器改良與公升級的實驗室,最近該實驗室收到了某公司所委託的乙個任務 需要在該公司某型號的計算器上加上解一元一次方程的功能。實驗室將這個任務交給了乙個剛進入的新手zl先生。為了很好的完成這個任務,zl先生首先研究了一些一元一次方程的例項 4 3x 8 6a 5 1 2 2a 5 ...