题解:P10372 [AHOI2024 初中组] 家庭作业

· · 题解

提供一种不同的思路。

我们可以把每一个算式定义成一个字符串,接下来把字符串里面的数字扣下来,最后判断就行。

我们可以这样做:定义两个变量,分别判断遍历字符串是否遍历到了 += ,在 + 前的是第一个数, += 中间的是第二个数, = 后面是第三个数。

我们可以用三个字符串把三个数存下来。接下来我们使用 atoi 函数把三个数转化成整数。

记得清空。

代码:

#include <bits/stdc++.h>
using namespace std;
string s;
string a,b,c;
bool flag1=1,flag2=1;//+和=的判断
int main(){
    int T;
    cin>>T;
    while(T--){
        cin>>s;
        flag1=flag2=1;
        a.clear();b.clear();c.clear();
        for(int i=0;i<s.length();i++){//遍历+判断
            if(flag1&&s[i]>='0'&&s[i]<='9'){ a+=s[i];}
            // cout<<(s[i]-'0');
            if(s[i]=='+') flag1=false;
            if(flag2&&!flag1&&s[i]>='0'&&s[i]<='9'){b+=s[i];}
            if(s[i]=='=') flag2=false;
            if(!flag1&&!flag2&&s[i]>='0'&&s[i]<='9'){c+=s[i];}
        }
        // cout<<a<<' '<<b<<' '<<c<<endl;
        int aa=stoi(a);//转整数
        int bb=stoi(b);
        int cc=stoi(c);
        if(aa+bb==cc) puts("Right!");
        else puts("Wrong!");
    }
    return 0;
}