为什么我下载了样例,在本地测试是对的,但提交显示我输出 0。代码如下。
#include <bits/stdc++.h>
using namespace std;
const long long kMaxN = 1e5 + 10, kMod = 1e4 + 7;
long long u[kMaxN], v[kMaxN], n, k, top;
char sta[kMaxN], ans[2 * kMaxN];
string c;
int main() {
cin >> n >> c, ans[++k] = '.';
for (long long i = 0; i < n; i++) {
(c[i] == '(' || c[i] == '*') && (sta[++top] = c[i]);
if (c[i] == '+') {
for (; sta[top] == '*'; ans[++k] = sta[top--]) {
}
sta[++top] = c[i];
}
if (c[i] == ')') {
for (; sta[top] != '('; ans[++k] = sta[top--]) {
}
top--;
}
(c[i] != '(' && c[i] != ')') && (ans[++k] = '.');
}
for (; top > 0; ans[++k] = sta[top--]) {
}
for (long long i = 1; i <= k; i++) {
(ans[i] == '.') && (u[++top] = v[top] = 1);
(ans[i] == '*') && (u[--top] = (u[top + 1] * v[top] + u[top] * v[top + 1] + u[top] * u[top + 1]) % kMod, v[top] = v[top] * v[top + 1] % kMod);
(ans[i] == '+') && (v[--top] = (u[top + 1] * v[top] + u[top] * v[top + 1] + v[top] * v[top + 1]) % kMod, u[top] = u[top] * u[top + 1] % kMod);
}
cout << u[1] << '\n';
return 0;
}