洛谷 P1022 計算器的改良

2022-02-13 01:12:47 字數 1122 閱讀 4750

題解:字串模擬

坑點:1) 0/-1=-0.

這是因為(來自洛谷討論區某大犇)

double下儲存的數字會有精度誤差,比如0可能被存成0.000000000...01

然而如果你乘上或者除以乙個負數,可能就變成了-0.000000000...01

然後因為浮點數是先判定符號再計算數值,就出現了負0這一情況

2)我遇到的就這乙個....

具體做法是以-,+,=為分界,分別累加字母的係數和實數

#include#include

#include

#include

using

namespace

std;

intnow,len,f,c,a,b;

string s; //

6a-5+1=2-2a;

char

ans;

intmain()

if(s[now]=='-'

)

if(s[now]=='+'

)

if(s[now]>='

0'&&s[now]<='9'

)

if(s[now]=='='

) }

b=b*-1;now++;c=0;f=1

;

while(now

if(s[now]=='-'

)

if(s[now]=='+'

)

if(s[now]>='

0'&&s[now]<='9'

) }

if(b==0)printf("

0.000\n");

else

printf(

"%c=%.3f\n

",ans,b*1./a);

return0;

}

洛谷 P1022 計算器的改良

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

洛谷 P1022 計算器的改良

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

洛谷 P1022 計算器的改良

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