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出错的题。