題目背景
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 ...