返回题解分享
讨论 / 题解分享/ 帖子详情

算式求值 - 题解

#include <bits/stdc++.h>
using namespace std;
using ll = long long;

int main() {
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    string s;
    cin >> s;
    vector<ll> nums;
    vector<char> ops;

    int i = 0;
    int n = s.size();
    while (i < n) {
        if (isdigit(s[i])) {
            ll num = 0;
            while (i < n && isdigit(s[i])) {
                num = num * 10 + (s[i] - '0');
                i++;
            }
            nums.push_back(num % 10000);
        } else {
            ops.push_back(s[i]);
            i++;
        }
    }

    if (nums.empty()) {
        cout << 0 << endl;
        return 0;
    }

    ll sum = 0;
    ll temp = nums[0];
    for (size_t j = 0; j < ops.size(); ++j) {
        char op = ops[j];
        ll num = nums[j + 1];
        if (op == '+') {
            sum = (sum + temp) % 10000;
            temp = num;
        } else if (op == '*') {
            temp = (temp * num) % 10000;
        }
    }
    sum = (sum + temp) % 10000;

    cout << sum << '\n';

    return 0;
}
0 回复 0 转发 0 喜欢 4 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!