本地测试正确,OJ全WA求助

P1957 口算练习题

Shack8 @ 2021-11-30 11:40:24

#include <bits/stdc++.h>
using namespace std;

int i;
char k;

int main( )
{
    cin>>i;
    string n[i][3];

    for (int j=0;j<i;j++)
    {
        for (int e=0;e<2;e++)
        {
            cin>>n[j][e];
        }
        if (n[j][0]>="a"&&n[j][0]<="c") cin>>n[j][2];
    }

    for (int j=0;j<i;j++)
    {
        if (n[j][0]=="a") k='a';
        else if (n[j][0]=="b") k='b';
        else if (n[j][0]=="c") k='c';
        else
        {
            if (k=='a')
            {
                n[j][2]=n[j][1];
                n[j][1]=n[j][0];
                n[j][0]="a";
            }        
            else if (k=='b')
            {
                n[j][2]=n[j][1];
                n[j][1]=n[j][0];
                n[j][0]="b";
            }
            else if (k=='c') 
            {
                n[j][2]=n[j][1];
                n[j][1]=n[j][0];
                n[j][0]='c';
            }
        }      

        char e=n[j][0][0];

        switch (e)
        {
            case 'a':
            {
                int num1=0,num2=0,l=n[j][1].size( )+n[j][2].size( )+2;
                for (int q=0;q<n[j][1].size( );q++)
                {
                    num1*=10;
                    num1+=n[j][1][q]-'0';
                }
                for (int q=0;q<n[j][2].size( );q++)
                {
                    num2*=10;
                    num2+=n[j][2][q]-'0';
                }
                cout<<n[j][1]<<"+"<<n[j][2]<<"="<<num1+num2<<endl;
                for (int num3=num1+num2;num3>0;num3/=10) l++;
                cout<<l<<endl;
                break;
            }
            case 'b':
            {
                int num1=0,num2=0,l=n[j][1].size( )+n[j][2].size( )+2;
                for (int q=0;q<n[j][1].size( );q++)
                {
                    num1*=10;
                    num1+=n[j][1][q]-'0';
                }
                for (int q=0;q<n[j][2].size( );q++)
                {
                    num2*=10;
                    num2+=n[j][2][q]-'0';
                }
                cout<<n[j][1]<<"-"<<n[j][2]<<"="<<num1-num2<<endl;
                for (int num3=num1-num2;num3>0;num3/=10) l++;
                cout<<l<<endl;
                break;
            }
            case 'c':
            {
                int num1=0,num2=0,l=n[j][1].size( )+n[j][2].size( )+2;
                for (int q=0;q<n[j][1].size( );q++)
                {
                    num1*=10;
                    num1+=n[j][1][q]-'0';
                }
                for (int q=0;q<n[j][2].size( );q++)
                {
                    num2*=10;
                    num2+=n[j][2][q]-'0';
                }
                cout<<n[j][1]<<"*"<<n[j][2]<<"="<<num1*num2<<endl;
                for (int num3=num1*num2;num3>0;num3/=10) l++;
                cout<<l<<endl;
                break;
            }
        }
    }

    return 0;
}

代码如上


by Shack8 @ 2021-11-30 11:41:17

请问是哪里不正确吗?


by YAHC @ 2021-12-04 22:46:57

我也是!

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string a=" abcdefghijklmnopqrstuvwxyz";
    int b[27]={1,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,4,1,2,3,1,2,3,4};
    string c;
    getline(cin,c);
    int ans;
    for(int i=0;i<=c.size()-1;i++)
    {
        ans+=b[a.find(c[i])];
    }
    cout<<ans;
}

|