資料結構 P1981 表示式求值

2022-06-20 00:00:19 字數 1150 閱讀 2329

給定乙個只包含加法和乘法的算術表示式,請你程式設計計算表示式的值。

一行,為需要你計算的表示式,表示式中只包含數字、加法運算子「++」和乘法運算子「×」,且沒有括號,所有參與運算的數字均為 0到 2^之間的整數。

輸入資料保證這一行只有0−9、+、×這 1212種字元。

乙個整數,表示這個表示式的值。

注意:當答案長度多於 4 位時,請只輸出最後4 位,前導0不輸出。

輸入 #1

1+1*3+4
輸出 #1

8
輸入 #2

1+1234567890*1
輸出 #2

7891
輸入 #3

1+1000000003*1
輸出 #3

4
【題解】

經典問題,利用棧直接模擬即可,過程中需要取模運算即可。

1 #include2 #include3 #include4 #include5 #include6

using

namespace

std;

7const

int n = 2e6+10;8

const

int mod = 10000;9

char

s[n];

10 stack num ;

1112

int mul(int u ,int

v )15

int add(int u ,int

v )20

void

read()

29if( x >= 10000 ) x%=10000;30

num.push(x);

3132

if( mul )

4142

if( s[i] == '

+' || s[i] =='*'

) 45 x = 0

;46 i++;47}

48int ans = 0;49

while( !num.empty() )

53 printf("

%d\n

",ans);54}

55int

main()

56

view code

P1981 表示式求值

題目鏈結 題目描述 給定乙個只包含加法和乘法的算術表示式,請你程式設計計算表示式的值。輸入格式 一行,為需要你計算的表示式,表示式中只包含數字 加法運算子 和乘法運算子 且沒有括號,所有參與運算的數字均為 0 到 2 31 1之間的整數。輸入資料保證這一行只有 0 9 這 12種字元。輸出格式 乙個...

P1981 表示式求值

題解 這個題聯想一下 p1310 表示式的值 思路就是輸入中綴式,轉成字尾式,然後按字尾式計算,完美!but!會嚴重re,因為你可能會輸入中綴式的時候輸入非常的長,然後你還要開棧,開字尾式陣列,還要轉化,嚴重re what about 一邊輸入一邊處理?how?首先你一定會輸入乙個數字 因為這是中綴...

洛谷p1981 表示式求值

題前廢話 咱也不知道咱寫了個什麼神奇的 導致 rqy都看不明白它是怎麼re掉的,的大致思路是這樣的 對於這樣乙個中綴表示式,先轉化成它的字尾表示式的形式,然後利用p1449 字尾表示式 這道題的solution來求解這個式子,但是咱也不知道為啥咱也找不出來為啥,它的所有語句都是可以正常執行的,最後答...