0分求助

P1957 口算练习题

WangYinxiAlex @ 2023-09-12 18:19:02

#include<iostream>
#include<algorithm>
using namespace std;
int m(int y){
    int l=0;
    while(y){
        l++;
        y/=10;
    }
    return l;
}
int main(){
    char a;
    int n=0;
    string n1;
    getline(cin,n1);
    for(int i=0;i<n1.size();i++){
        n=n*10+(n1[i]-'0');
    }
    for(int i=1;i<=n;i++){
        string s;
        long long r[2]={0,0};
        int k=0;
        getline(cin,s);
        if(s[0]>='0'&&s[0]<='9'){
            for(int j=0;j<s.size();j++){
                if(s[j]==' '){
                    k++;
                    continue;
                }
                r[k]=r[k]*10+s[j]-'0';
            }
        }
        else{
            a=s[0];
            for(int j=2;j<s.size();j++){
                if(s[j]==' '){
                    k++;
                    continue;
                }
                r[k]=r[k]*10+s[j]-'0';
            }
        }
        int l=m(r[0])+m(r[1])+2;
        switch(a){
            case 'a':{
                cout<<r[0]<<"+"<<r[1]<<"="<<r[0]+r[1]<<endl;
                l+=m(r[0]+r[1]);
                break;
            }
            case 'b':{
                cout<<r[0]<<"-"<<r[1]<<"="<<r[0]-r[1]<<endl;
                if(r[0]-r[1]<0){
                    l++;
                    l+=m(abs(r[0]-r[1]));
                }
                else l+=m(r[0]-r[1]);
                break;
            }
            case 'c':{
                cout<<r[0]<<"*"<<r[1]<<"="<<r[0]*r[1]<<endl;
                l+=m(r[0]*r[1]);
                break;
            }
        }
        cout<<l<<endl;
    }
    return 0;
}

为什么答案一样,却判我错?

大佬回答必关注!!!


by shb20111113 @ 2023-09-12 18:22:46

代码?代码!

开始了哦!:

#include <bits/stdc++.h>
int n,x,y;
char cchar[20],cd[100],k;
int main() {
    scanf("%d",&n);
    for(int i=1; i<=n; i++) {
        scanf("%s",&cchar);
        if(isalpha(cchar[0])) {
            k=cchar[0];
            scanf("%d%d",&x,&y);
        } else {
            x=atoi(cchar);
            scanf("%d",&y);
        }
        if(k=='a')
            sprintf(cd,"%d+%d=%d",x,y,x+y);
        else if(k=='b')
            sprintf(cd,"%d-%d=%d",x,y,x-y);
        else
            sprintf(cd,"%d*%d=%d",x,y,x*y);
        printf("%s\n%d\n",cd,strlen(cd));
    }
    return 0;
}

如果行的话求关注


by hexuchen @ 2023-09-12 18:27:37

@shb20111113 不是别人求助你发你自己的代码干嘛啊


by shb20111113 @ 2023-09-12 18:28:59

@hexuchen 参考一下嘛


by hexuchen @ 2023-09-12 18:29:55

@WangYinxiAlex 测试点的输出是对的,可能是getline的问题


by WangYinxiAlex @ 2023-09-12 18:35:42

@hexuchen @shb20111113 好,谢谢,我看看,已关注。


by WangYinxiAlex @ 2023-09-12 18:46:38

@hexuchen 看这个: emmmm······


by WangYinxiAlex @ 2023-09-12 18:57:17

感谢大佬!!!

(由于排版出问题了,没法用超大体字感谢)

@hexuchen AC了,谢谢,果然就是getline的问题。


by hexuchen @ 2023-09-12 20:00:57

@WangYinxiAlex 不用谢,getline很容易出错


by WangYinxiAlex @ 2023-09-13 20:25:27

@hexuchen 嗯嗯,还是要谢谢你,我又AC了4条因为getline出错的题。


|