10分求助,打了一下午代码怎么会这样qwq

P1957 口算练习题

perfectbit222 @ 2022-09-22 14:18:09

可过测试点

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a;
    int cc,dd,sum,sum1,summ=1;
    int len1,len2;
    int m;
    char b,bb;//b存储第一位 
    cin>>a;
    string c;
    string s1,d;//定义输入字符串 
    int aaa,bbb;
    for(int A=1;A<=a;A++)//开始下面的运算 
    {
        cin>>c;
        {
            //switch (c)
            //{ 
                if (c=="a"){
                    m=1;
                    cin>>c>>d;//输入第一个数字和第二个数字 
                    len1=c.size();
                    len2=d.size();//求出两个数字长度 
                    cc=atoi(c.c_str());
                    dd=atoi(d.c_str());//把字符串类型强制转换为int 
                    sum = cc+dd;
                    if (sum<0)
                    {
                        summ=2;
                    }
                    else
                    {
                        summ=1;
                    }
                    sum1=abs(sum);
                    while(sum1>=10)
                    {
                        sum1=sum1/10;
                        summ++;
                    }
                    cout<<cc<<"+"<<dd<<"="<<sum<<endl<<(len1+len2+summ+2);
                    //break;
                    }
                    else if(c=="b")
                //case 'b':
                {
                    m=2;
                    cin>>c>>d;//输入第一个数字和第二个数字 
                    len1=c.size();
                    len2=d.size();//求出两个数字长度 
                    cc=atoi(c.c_str());
                    dd=atoi(d.c_str());//把字符串类型强制转换为int 
                    sum = cc-dd;
                    sum1=abs(sum);
                    if (sum<0)
                    {
                        summ=2;
                    }
                    else
                    {
                        summ=1;
                    }
                    while(sum1>=10)
                    {
                        sum1=sum1/10;
                        summ++;
                    }
                    cout<<cc<<"-"<<dd<<"="<<sum<<endl<<(len1+len2+summ+2);
                    }
                    //break;
                //case 'c':
                else if (c=="c")
                {
                    m=3;
                    cin>>c>>d;//输入第一个数字和第二个数字 
                    len1=c.size();
                    len2=d.size();//求出两个数字长度 
                    cc=atoi(c.c_str());
                    dd=atoi(d.c_str());//把字符串类型强制转换为int 
                    sum = cc*dd;
                    sum1=abs(sum);
                    if (sum<0)
                    {
                        summ=2;
                    }
                    else
                    {
                        summ=1;
                    }
                    while(sum1>=10)
                    {
                        sum1=sum1/10;
                        summ++;
                    }
                    cout<<cc<<"*"<<dd<<"="<<sum<<endl<<(len1+len2+summ+2);
                    //break;
                }
            else{
                    if(m==1)
                    {
                    cin>>d;//输入第一个数字和第二个数字 
                    len1=c.size();
                    len2=d.size();//求出两个数字长度 
                    cc=atoi(c.c_str());
                    dd=atoi(d.c_str());//把字符串类型强制转换为int 
                    sum = cc+dd;
                    if (sum<0)
                    {
                        summ=2;
                    }
                    else
                    {
                        summ=1;
                    }
                    sum1=abs(sum);
                    while(sum1>=10)
                    {
                        sum1=sum1/10;
                        summ++;
                    }
                    cout<<cc<<"+"<<dd<<"="<<sum<<endl<<(len1+len2+summ+2);
                    }
                    else if(m==2)
                    {
                    cin>>d;//输入第一个数字和第二个数字 
                    len1=c.size();
                    len2=d.size();//求出两个数字长度 
                    cc=atoi(c.c_str());
                    dd=atoi(d.c_str());//把字符串类型强制转换为int 
                    sum = cc-dd;
                    sum1=abs(sum);
                    if (sum<0)
                    {
                        summ=2;
                    }
                    else
                    {
                        summ=1;
                    }
                    while(sum1>=10)
                    {
                        sum1=sum1/10;
                        summ++;
                    }
                    cout<<cc<<"-"<<dd<<"="<<sum<<endl<<(len1+len2+summ+2);
                    }
                    else if (m==3)
                    {
                    cin>>d;//输入第一个数字和第二个数字 
                    len1=c.size();
                    len2=d.size();//求出两个数字长度 
                    cc=atoi(c.c_str());
                    dd=atoi(d.c_str());//把字符串类型强制转换为int 
                    sum = cc*dd;
                    sum1=abs(sum);
                    if (sum<0)
                    {
                        summ=2;
                    }
                    else
                    {
                        summ=1;
                    }
                    while(sum1>=10)
                    {
                        sum1=sum1/10;
                        summ++;
                    }
                    cout<<cc<<"*"<<dd<<"="<<sum<<endl<<(len1+len2+summ+2);
                    //}
                }
    }
}
}
}

by xlpri @ 2022-09-22 15:30:00

建议简短一下,可以不用高精度,它的数据范围是

"运算数为非负整数且小于 10000"

所以最大才10^8 ,使用 int 即可

我猜测这个代码大多数是 TLE


by xlpri @ 2022-09-22 15:33:44

最后尽量不要调用万能库,容易超时


by xlpri @ 2022-09-22 15:35:14

@perfectbit222


by perfectbit222 @ 2022-09-22 15:36:01

@xlpri 嗯嗯


|