>description
最近實驗室收到了乙個任務:解一元一次方程。
為了很好的完成這個任務,zl先生首先研究了一些一元一次方程的例項:
4+3x=8
6a−5+1=2−2a
−5+12y=0
zl先生被主管告之,在計算器上鍵入的乙個一元一次方程中,只包含整數、小寫字母及+、-、=這三個數學符號(當然,符號「-」既可作減號,也可作負號)。方程中並沒有括號,也沒有除號,方程中的字母表示未知數。
你可假設對鍵入的方程的正確性的判斷是由另乙個程式設計師在做,或者說可認為鍵入的一元一次方程均為合法的,且有唯一實數解。
>input
乙個一元一次方程。
>output
解方程的結果(精確至小數點後三位)。
>sample input
6a-5+1=2-2a
>sample output
a=0.750
>解題思路
一道模擬題。
把未知數移到等號左邊,把剩下的移到方程的右邊,分別記錄下他們的係數即可。
需要注意的坑:
-1a是以-a的方式呈現
在c++中,0除以乙個負數得出來的是-0
>**
#include
#include
#include
#define ll long long
using namespace std;
ll x, y, l, s;
//x記錄等號左邊的係數,y記錄等號右邊的係數
char c, a;
double ans;
int main()
if(c >=
'0'&& c <=
'9') l = l *
10+ c -
'0';
if(c >=
'a'&& c <=
'z')
c =getchar()
;} y -= l * s;
//處理等號左邊
l =0, s =1;
c =getchar()
;while
(c !=10)
if(c >=
'0'&& c <=
'9') l = l *
10+ c -
'0';
if(c >=
'a'&& c <=
'z')
c =getchar()
;}y += l * s;
//處理等號右邊
ans =
(double) y / x;
if(ans ==
-0.0
) ans =0;
printf
("%c=%.3f"
, a, ans)
;return0;
}
計算機基礎 計算機的構成
也許有人認為技術人員不需要硬體或計算機底層原理的知識。因為這個層面的一些處理往往已經封裝好,不需要重新進行規劃。然而,事實並非如此,系統構建於硬體與作業系統之上,我們應該對計算機底層原理有一定認識,以避免在研發過程中導致的一系列安全與效能問題。計算機的發展經歷了電子管和電晶體時代 積體電路時代 中小...
計算機的計算
計算機使用二進位制。人們習慣使用十進位制,據說是因為人類的雙手有十根手指頭。與十進位制相比,二進位制有什麼特點呢?在理論上,二進位制與十進位制雖各有千秋,但沒有本質上的區別,計算時,既可以用十進位制,也可以用二進位制。但是,計算機中的二進位制與數學上的二進位制卻有很大的差別。計算機的世界中沒有正負號...
計算機 計算機基礎整理
大學四年浪費的代價。半夜整理東西 cpu 其功能主要是解釋計算機指令以及處理計算機軟體中的資料。cpu由運算器 控制器和暫存器及實現它們之間聯絡的資料 控制及狀態的匯流排構成。差不多所有的cpu的運作原理可分為四個階段 提取 fetch 解碼 decode 執行 execute 和寫回 writeb...