P1022 計算器的改良

2022-05-05 19:57:29 字數 1501 閱讀 4229

題目背景

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

題目描述

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

4+3x=8

6a-5+1=2-2a

-5+12y=0

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

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

錯誤筆記: 用了兩個 \(while\) 巢狀在一起, 出現了蜜汁 \(bug\) 。以後字串模擬盡量 \(while + if\) 吧

很有實用價值的一題呀

注意以下坑點:

1、變數係數為 \(1\) 或 \(-1\) 時, 可以省略 \(1\)

2、\(c++\) 中計算 " \(0\) 除以乙個負數 " 時, 答案為 \(-0\)

然後仿照快讀, 以 " \(+\ -\) 和變數 " 作為分割, 字串模擬即可

#include#include#include#include#include#includetypedef long long ll;

using namespace std;

int rd()

while(c >= '0' && c <= '9')

return flag * out;

}const int maxn = 1000019;

char s[maxn];

char a;

int na, ans;

int main()

else if(s[i] == '+')

else

flag = 1, out = 0;}}

if(s[i] >= '0' && s[i] <= '9')out = out * 10 + s[i] - '0';

i++;

} ans -= flag * out;

flag = 1, out = 0;

i++;

while(i < len)

else if(s[i] == '+')

else

flag = 1, out = 0;}}

if(s[i] >= '0' && s[i] <= '9' && i < len)out = out * 10 + s[i] - '0';

i++;

} ans += flag * out;

if(ans == 0)

printf("%c=%.3lf\n", a, double((ans * 1.0) / na));

return 0;

}

P1022計算器 改良

傳送 這個題讓你通過自己的努力,來寫乙個可以解一元一次方程的計算題 麻麻再也不用擔心我計算錯了qwq 我們先學習一下一元一次方程的解法 step1 移項。把帶有未知數的項移到方程的一邊,把常數項移到方程的另一邊。step2 係數化一。方程左右兩邊同時除以未知數的係數 step3 寫答 最後別忘了輸出...

P1022 計算器的改良

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

P1022 計算器的改良

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