建议下表从1开始,测一下 3*5+1
就是j==0时访问n[j-1]会越界吧
by Louisshen @ 2023-11-18 12:35:17
额不对,j得从1开始。。。
by Louisshen @ 2023-11-18 12:38:07
把for里的j改为j+1
by Louisshen @ 2023-11-18 18:59:06
问题一样,多谢楼上大佬指教
by Jeremy811 @ 2023-12-04 21:37:48
@[lizhuorong](/user/719843) 猜到你可能不会队列,所以绞尽脑汁想了个简单方法:
```cpp
#include <bits/stdc++.h>
const int mod=10000;
int x,sum,t;
char c;
int main(){
scanf("%d",&t);//读入第一个数
while(scanf("%c",&c)&&c!='\n'){
scanf("%d",&x);
if(c=='*') t=t*x%mod;//优先乘
else sum=(sum+t)%mod,t=x;
}
printf("%d",(sum+t)%mod);//加上最后一段的积
return 0;
}
```
可AC
by ltzx2022_kanxinyi_5 @ 2023-12-07 20:29:31
@[lizhuorong](/user/719843)
# @_[lizhuorong](/user/719843)_
你的a[i]判断应该再往前一个下标,因为你的符号不能从第二个开始判断,c++数组越界一般不会出问题(可以过编(本地环境))
``` c++
#include<bits/stdc++.h>
using namespace std;
long long n[100000000];
int main(){
int i=0;
char a[100000];
int num=0;
while(cin>>n[i]){
cin>>a[i];
i++;
}
for(int j=0;j<i;j++){
if(a[j-1]=='*'){
n[j]=(n[j]*n[j-1])%10000;
n[j-1]=0;
}
}
for(int j=0;j<i;j++){
num+=n[j];
num%=10000;
}
cout<<num;
}
```
by _GJY_ @ 2024-01-19 15:25:39