要考慮到%,被坑了好多次QQ
順便附上程式碼 (我是用DFS解法)
#include<bits/stdc++.h>
using namespace std;
int solve(int z,int len);
string in;
int main(){
while(getline(cin,in)){
long long int r=solve(0,in.length());
cout<<r<<endl;
}
}
int solve(int z,int len){
int a=0;
for(int i=len-1;i>=z;i--){
if(in[i] == ')'){
++a;
}
if(in[i] == '('){
--a;
}
if(in[i] == '+' && a==0){
return solve(z,i)+solve(i+1,len);
}
if(in[i] == '-' && a==0){
return solve(z,i)-solve(i+1,len);
}
}
for(int i=len-1;i>=z;i--){
if(in[i] == ')'){
++a;
}
if(in[i] == '('){
--a;
}
if(in[i] == '*' && a==0){
return solve(z,i)*solve(i+1,len);
}
if(in[i] == '/' && a==0){
return solve(z,i)/solve(i+1,len);
}
if(in[i] == '%' && a==0){
return solve(z,i)%solve(i+1,len);
}
}
if((in[z]=='(') && (in[len-1]==')')){
return solve(z+1,len-1);
}
if(in[z]==' ' && in[len-1]==' '){
return solve(z+1,len-1);
}
if(in[z]==' '){
return solve(z+1,len);
}
if(in[len-1]==' '){
return solve(z,len-1);
}
long long int num=0;
if(isdigit(in[z])&&isdigit(in[len-1])){
for(int i=z;i<len;i++){
num=num*10+in[i]-'0';
}
return num;
}
}
要考慮到%,被坑了好多次QQ
不好意思,小弟我也卡在這個測資,想問一下大大
考慮到%是甚麼意思?
%的優先程度跟乘除一樣嗎?
要考慮到%,被坑了好多次QQ
不好意思,小弟我也卡在這個測資,想問一下大大
考慮到%是甚麼意思?
%的優先程度跟乘除一樣嗎?
我找到問題點了,沒事