求助
查看原帖
求助
671260
Nekomusume楼主2022/8/12 11:03
#include <iostream>
using namespace std;

int digit(int x)
{
    if(x == 0)return 1;
    int y = x, cnt = 0;
    while(y)
    {
        y /= 10;
        cnt++;
    }
    return cnt;
}

int main()
{
    int n, a, b, flag;
    char c;
    cin >> n;
    for(int i = 1; i <= n; i++)
    {
        cin >> c;
        if(c >= '0' && c <= '9')
        {
//----------------------------
        //这里有问题
            int sum = c - '0';
            cin >> a;
            for(int i = 1; i <= digit(a); i++)
            {
                sum *= 10;
            }
            a += sum;
//----------------------------
            cin >> b;
            cout << a;
            if(flag == 1)
            {
                cout << '+' << b << '=' << a + b << endl;
                int num = 0;
                if(a < 0)num++; if(b < 0)num++; if(a + b < 0)num++;
                cout << digit(a) + digit(b) + digit(a + b) + 2 + num << endl;
            }else if(flag == 2)
            {
                cout << '-' << b << '=' << a - b << endl;
                int num = 0;
                if(a < 0)num++; if(b < 0)num++; if(a - b < 0)num++;
                cout << digit(a) + digit(b) + digit(a - b) + 2 + num << endl;
            }else if(flag == 3)
            {
                cout << '*' << b << '=' << a * b << endl;
                int num = 0;
                if(a < 0)num++; if(b < 0)num++; if(a * b < 0)num++;
                cout << digit(a) + digit(b) + digit(a * b) + 2 + num << endl;
            }
        }
        else if(c >= 'a' && c <= 'c')
        {
            cin >> a >> b;
            cout << a;
            if(c == 'a')
            {
                flag = 1; cout << '+' << b << '=' << a + b << endl;
                int num = 0;
                if(a < 0)num++; if(b < 0)num++; if(a + b < 0)num++;
                cout << digit(a) + digit(b) + digit(a + b) + 2 + num<< endl;
            }
            else if(c == 'b')
            {
                flag = 2; cout << '-' << b << '=' << a - b << endl;
                int num = 0;
                if(a < 0)num++; if(b < 0)num++; if(a - b < 0)num++;
                cout << digit(a) + digit(b) + digit(a - b) + 2 + num << endl;
            }
            else if(c == 'c')
            {
                flag = 3; cout << '*' << b << '=' << a * b << endl;
                int num = 0;
                if(a < 0)num++; if(b < 0)num++; if(a * b < 0)num++;
                cout << digit(a) + digit(b) + digit(a * b) + 2 + num << endl;
            }
        }        
    }
    return 0;
}
/*
4
a 64 46
275 125
c 11 99
b 46 64
*/

90分代码,#2wa

看了题解区后发现,当测试点为

2
a 10 10
100 200

时,我的代码输出为

10+10=20
8
10+200=210
10

所以是a的输入出了问题。 求大佬帮忙解决一下,自己实在搞不动了

2022/8/12 11:03
加载中...