CSP-J 準決勝スプリントの必須回答質問 | P1981 表現の評価

幼い頃からC++を学びましょう!CSP-J 試験準備の学習プロセスにおける質問を記録し、あらゆる瞬間を記録します。

まとめ記事を添付します: CSP-J準決勝スプリント必須回答問題 | まとめ_プログラミング大好きコミュニケーターのブログ - CSDN Blog


[タイトル説明]

加算と乗算のみを含む算術式が与えられた場合、その式を評価するプログラムをプログラムします。

【入力】

1 行は計算する必要がある式です。式には数値、加算演算子 "+" と乗算演算子 "×" のみが含まれており、括弧はありません。演算に含まれる数値はすべて 0 から 2^ の間です。 31−1. 間の整数。

入力データにより、この行には 0 ~ 9、+、および × の 12 文字のみが含まれることが保証されます。

【出力】

この式の値を表す整数。

注: 答えが 4 桁を超える場合は、最後の 4 桁のみを出力し、先頭の 0 は出力しません。

【入力サンプル】

1+1*3+4

【出力サンプル】

8

【詳しいコード説明】

#include <iostream>
#include <stack>
using namespace std;
stack<long long> st;
int main ( )
{
    long long a, c, x = 0;
    char b;
    cin >> a;
    a %= 10000; 
    st.push(a);
    while (cin >> b) {
        cin >> a;
        a %= 10000;
        if (b == '*') {
            c = st.top();
            st.pop();
            st.push(a * c % 10000);
        }
        else {
            st.push(a);
        }
    } 
    while (!st.empty()) {
        x += st.top();
        st.pop();
        x %= 10000;
    }
    cout << x;
 
    return 0;
}

【運用結果】

1+1*3+4
8

おすすめ

転載: blog.csdn.net/guolianggsta/article/details/133434423