#45767: c++ AC


yp11351170@yphs.tp.edu.tw (702-37謝博宇)

學校 : 臺北市私立延平高級中學
編號 : 301675
來源 : [203.72.178.1]
最後登入時間 :
2025-04-10 11:38:10
a017. 五則運算 | From: [203.72.178.1] | 發表日期 : 2025-04-10 11:37

#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;
    }    
}

 

 
ZeroJudge Forum