NOIP 2000 計算器的改良 題解

2021-07-23 15:20:54 字數 1789 閱讀 5401

★★   輸入檔案:computer.in輸出檔案:computer.out簡單對比

時間限制:1 s   記憶體限制:128 mb

問題描述

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

4+3x=8

6a-5+1=2-2a

-5+12y=0

zl 先生被主管告之,在計算器上鍵入的乙個一元一次方程中,只包含整數、小寫字母及

十、一、=這三個數學符號(當然,符號「一」既可作減號,也可作負號)。方程中並沒有括號,也沒有除號,方程中的字母表示未知數。

問題求解:

編寫程式,解輸入檔案中的一元一次方程,將解方程的結果(精確至小數點後三位)輸出至輸出檔案。你可假設對鍵入的方程的正確性的判斷是由另乙個程式設計師在做,或者說可認為鍵入的一元一次方程均為合法的,且有唯一實數解。

【輸入格式】

輸入檔案只有一行。即乙個合法的一元一次方程。

【輸出格式】

輸出檔案也只有一行。即該方程的解。

【輸入輸出樣例】

輸入檔名: computer.in

6a-5+1=2-2a

輸出檔名:computer.out

a=0.750

這就是個大模擬....**如下

#include#include#include#includeusing namespace std;

char a[2000];

char c[2000];

double ans;

int xi=0;

int st=0;

bool shu=0;

int r=0;

int re=0;

char yuan;

int l;

int main()

} //將方程『=』右的部分符號改變,然後都按左邊處理

//cout<='0'&&a[i]<='9')

//是數字的話就累計,類似快速讀入

else

if(shu) //前面是數

else xi+=re; //計算總係數

re=0;

shu=0;

st=0; //重置

}else //當前不是未知亮

else r-=re; //計算將常數項移到右邊後的總值

re=0;

shu=0;

st=0; //重置 }}

} //printf("%d %d",r,xi);

ans=double(r)/double(xi);

if(fabs(ans-0)>0.0005) //判斷ans 範圍 防止輸出-0.000這種數字;

printf("%c=%.3lf",yuan,ans);

else

printf("%c=%.3lf",yuan,fabs(ans));

} // ps:有乙個小bug 是如果係數1省略的話就會出錯,但對於這道題來說不會出現 (因為是計算器)

T 1 NOIP 2000 計算器的改良

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

NOIP 計算器的改良

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

計算器的改良

在codevs上遇到乙個挺新穎的題目,設計演算法解一元一次方程。ncl是一家專門從事計算器改良與公升級的實驗室,最近該實驗室收到了某公司所委託的乙個任務 需要在該公司某型號的計算器上加上解一元一次方程的功能。實驗室將這個任務交給了乙個剛進入的新手zl先生。為了很好的完成這個任務,zl先生首先研究了一...