entity @ 2020-10-28 22:21:47
#include<iostream>
#include<string>
#include<cstdio>
#include<cstring>
using namespace std;
/*
4
a 64 46
275 125
c 11 99
b 46 64
1
a 99 999
*/
int a,b,c,n,len=0;
char str[30]={},save='d';
int space[11]={1,10,100,1000,10000};
int main(){
scanf("%d",&n);
getchar();
while(n--){
len=0;
cin.getline(str,20);
if(str[0]>='a'&&str[0]<='c'){
bool f=false;
a=0;
b=0;
int lenth=strlen(str);
for(int i=2;i<lenth;i++){
if(str[i]==' '){
f=true;
}else{
if(!f) a=a*10+str[i]-'0';
else b=b*10+str[i]-'0';
}
}
if(str[0]=='a'){
c=a+b;
save='a';
}else{
if(str[0]=='b'){
c=a-b;
save='b';
}else{
c=a*b;
save='c';
}
}
}else{
bool f=false;
a=0;
b=0;
int lenth=strlen(str);
for(int i=0;i<lenth;i++){
if(str[i]==' '){
f=true;
}else{
if(!f) a=a*10+str[i]-'0';
else b=b*10+str[i]-'0';
}
}
if(save=='a') c=a+b;
else if(save=='b') c=a-b;
else c=a*b;
}
cout<<a;
if(save=='a') cout<<'+';
else if(save=='b') cout<<'-';
else cout<<'*';
cout<<b<<'='<<c<<endl;
if(a<0){
len++;
a=-a;
}
if(b<0){
len++;
b=-b;
}
if(c<0){
len++;
c=-c;
}
if(a>10000)len+=5;
else
for(int i=1;i<=4;i++)
if(space[i]>a){
len+=i;
break;
}
if(b>10000)len+=5;
else
for(int i=1;i<=4;i++)
if(space[i]>b){
len+=i;
break;
}
if(c>10000)len+=5;
else
for(int i=1;i<=4;i++)
if(space[i]>c){
len+=i;
break;
}
len+=2;
cout<<len<<endl;
}
return 0;
}
第一个测试点说我的第六位是5,洛谷在线IDE测试过,没有问题QwQ
by donghanwen1225 @ 2020-10-28 22:37:25
for(int i=0;i<lenth;i++){
if(str[i]==' '){
f=true;
}else{
if(!f) a=a*10+str[i]-'0';
else b=b*10+str[i]-'0';
}
}
注意这题数据可能很毒瘤(比如第一个数字之前有一大堆空格),所以您最好把第三行改成if(str[i]==' '&&a)