計算(資訊學奧賽一本通 T1356)

2021-10-19 07:35:25 字數 1524 閱讀 9503

題目描述

小明在你的幫助下,破密了ferrari設的密碼門,正要往前走,突然又出現了乙個密碼門,

門上有乙個算式,其中只有( )0 ~ 9+ - * / ^,求出的值就是密碼。

小明數學學得不好,還需你幫他的忙。(/用整數除法)

輸入格式

共 1 行,為乙個算式。

輸出格式

共 1 行,就是密碼。

輸入樣例

1+(3+2)(7^2+69)/(2)

輸出樣例

258題解

stack:

解題步驟

如果是數字:直接壓入數字棧中;

如果是(:直接壓入字元棧中;

如果是):就將括號內的表示式計算完;

如果是運算子:若當前運算子的優先順序 ≤ 前乙個運算子的優先順序,那麼就計算前面的,再將當前運算子加入字元棧中;

特殊情況

減號:如1 - 2 + 3,此時無需特殊處理;

負號:如-1 - 2 + 3(1 + 2) * (-3 + 4),此時應該把-1-3加入數字棧中;

#include

#include

#include

#include

using

namespace std;

stack<

int> num;

stack<

char

> op;

map<

char

,int

> hash;

void

cal(

)int

main()

else

if(s[i]

=='('

)else

if(s[i]

==')'

)else

else op.

push

(s[i]);

}}while

(op.

size()

)cal()

; cout << num.

top(

)<< endl;

return0;

}

ps:

很多題解都沒考慮到負數的情況也過了?

為啥用getline提交就會執行錯誤,害得我找了好久的錯?

資訊學奧賽一本通1356 計算 calc (棧)

時間限制 1000 ms 記憶體限制 65536 kb 提交數 5797 通過數 2252小明在你的幫助下,破密了ferrari設的密碼門,正要往前走,突然又出現了乙個密碼門,門上有乙個算式,其中只有 0 9 求出的值就是密碼。小明數學學得不好,還需你幫他的忙。用整數除法 共1行,為乙個算式。共1行...

均值(資訊學奧賽一本通 T1060)

題目描述 給出一組樣本資料,包含n個浮點數,計算其均值,精確到小數點後4位。輸入 輸入有兩行,第一行包含乙個整數n n小於100 代表樣本容量 第二行包含n個絕對值不超過1000的浮點數,代表各個樣本資料。輸出 輸出一行,包含乙個浮點數,表示均值,精確到小數點後4位。輸入樣例 21.0 3.0 輸出...

計算郵資(資訊學奧賽一本通 T1052)

題目描述 根據郵件的重量和使用者是否選擇加急計算郵費。計算規則 重量在1000克以內 包括1000克 基本費8元。超過1000克的部分,每500克加收超重費4元,不足500克部分按500克計算 如果使用者選擇加急,多收5元。輸入 輸入一行,包含整數和乙個字元,以乙個空格分開,分別表示重量 單位為克 ...