社区讨论

84pts求调

P1022[NOIP 2000 普及组] 计算器的改良参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@milhadpj
此快照首次捕获于
2025/11/30 16:48
3 个月前
此快照最后确认于
2025/12/03 10:05
3 个月前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
int main(){
    string s,s1,s2;
    char c;
    cin>>s;
    for(int i=0;i<s.length();i++){
        if(s[i]=='=')
            s1=s.substr(0,i),s2=s.substr(i+1);
    }
    int ch=0,in=0;
    if(s1[0]!='-')
        s1='+'+s1;
    if(s2[0]!='-')
        s2='+'+s2;
    for(int i=0;i<s1.length();){
        int st=i;
        i++;
        while(i<s1.length() && s1[i]!='+' && s1[i]!='-'){
            i++;
        }
        s=s1.substr(st,i-st);
        char x=s[s.length()-1];
        if('0'<=x && x<='9')
            in+=stoi(s);
        else{
            c=x;
            if(s.length()!=2)
                ch-=stoi(s.substr(0,s.length()-1));
            else{
                if(s[0]=='+')
                    ch--;
                if(s[0]=='-')
                    ch++;
            }
        }
    }
    for(int i=0;i<s2.length();){
        int st=i;
        i++;
        while(i<s2.length() && s2[i]!='+' && s2[i]!='-'){
            i++;
        }
        s=s2.substr(st,i-st);
        char x=s[s.length()-1];
        if('0'<=x && x<='9')
            in-=stoi(s);
        else{
            c=x;
            if(s.length()!=1)
                ch+=stoi(s.substr(0,s.length()-1));
            else{
                if(s[0]=='+')
                    ch++;
                if(s[0]=='-')
                    ch--;
            }
        }
    }
    double x=in*1.0/ch;
    if(x==(-0.000))
        cout<<0.000;
    else
        cout<<c<<"="<<fixed<<setprecision(3)<<x;
    return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...