| Run ID | 作者 | 问题 | 语言 | 测评结果 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|
| 84020 | sh25_shenpy | 表达式求值 | C++ | 通过 | 449 MS | 3460 KB | 1250 | 2026-02-05 16:21:40 |
#include <iostream> #include <string> #include <vector> using namespace std; int main() { string expr; cin >> expr; vector<long long> numbers; vector<char> ops; long long num = 0; for (char c : expr) { if (c >= '0' && c <= '9') { num = num * 10 + (c - '0'); } else { numbers.push_back(num % 10000); // 取模,防止后续乘法溢出 ops.push_back(c); num = 0; } } numbers.push_back(num % 10000); // 最后一个数字 // 处理乘法 for (size_t i = 0; i < ops.size(); ) { if (ops[i] == '*') { long long a = numbers[i]; long long b = numbers[i + 1]; long long product = (a * b) % 10000; numbers[i] = product; numbers.erase(numbers.begin() + i + 1); ops.erase(ops.begin() + i); } else { i++; } } // 处理加法 long long result = numbers[0]; for (size_t i = 0; i < ops.size(); ++i) { result = (result + numbers[i + 1]) % 10000; } // 输出结果,注意前导零的处理 cout << result << endl; return 0; }