为什么10分???

P1981 [NOIP2013 普及组] 表达式求值

建议下表从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


|