小乔勇闯天涯 提交的代码
提交时间: 2021 八月
语言: C++
运行时间: 0ms
占用内存: 254K
Accepted
代码内容

登录之后查看代码,点此登录账号

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int lx, rx, lval, rval;

vector<string> split(string s, char t)
{
    vector<string> res;
    for (int i = 0; i < s.size(); i++)
    {
        string tmp;
        int j = i;
        while (s[j] != t) tmp += s[j ++ ];
        i = j;
        res.push_back(tmp);
    }
    return res;
}

int main()
{
    string s;
    cin >> s;
    
    auto items = split(s + '=', '=');
    string s1 = items[0], s2 = items[1];
    
    if (s1[0] != '-') s1 = '+' + s1;
    if (s2[0] != '-') s2 = '+' + s2;
    
    for (int i = 1; i < s1.size(); i++)
    {
        string tmp;
        int j = i;
        while (j < s1.size() && (s1[j] != '+' && s1[j] != '-')) tmp += s1[j ++];
        i = j;
        
        char op = s1[j - tmp.size() - 1];
        if (op == '+')
        {
            if (tmp.back() == 'x')
            {
                if (tmp.size() == 1) lx ++;
                else lx += stoi(tmp.substr(0, tmp.size() - 1));
            }
            else
                lval += stoi(tmp);
        }
        else
        {
            if (tmp.back() == 'x')
            {
                if (tmp.size() == 1) lx --;
                else lx -= stoi(tmp.substr(0, tmp.size() - 1));
            }
            else
                lval -= stoi(tmp);
        }
    }
    
    for (int i = 1; i < s2.size(); i++)
    {
        string tmp;
        int j = i;
        while (j < s2.size() && (s2[j] != '+' && s2[j] != '-')) tmp += s2[j ++];
        i = j;
        
        char op = s2[j - tmp.size() - 1];
        if (op == '+')
        {
            if (tmp.back() == 'x')
            {
                if (tmp.size() == 1) rx ++;
                else rx += stoi(tmp.substr(0, tmp.size() - 1));
            }
            else
                rval += stoi(tmp);
        }
        else
        {
            if (tmp.back() == 'x')
            {
                if (tmp.size() == 1) rx --;
                else rx -= stoi(tmp.substr(0, tmp.size() - 1));
            }
            else
                rval -= stoi(tmp);
        }
        // cout << "!!!" << tmp.substr(0, tmp.size() - 1) << endl;
        // cout << op << ' ' << tmp << endl;
    }
    
    // cout << lx << ' ' << lval << ' ' << rx << ' ' << rval << endl;
    if (lx == rx) 
    {
        if (lval == rval) puts("infinite solutions");
        else puts("no solution");
    } 
    else
    {
        rval -= lval;
        lx -= rx;
        printf("x=%d\n", rval / lx);
    }
    return 0;
}