題解:字串模擬
坑點: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...