林震安 @ 2022-11-04 17:51:07
#include<bits/stdc++.h>
using namespace std;
int n,dq=1;
char x[10010];
void work()
{
int num1=0,num2=0;
cin.getline(x,9999);
if(x[0]>'9'||x[0]<'0')
{
int j=2;
while(x[j]>'9'||x[j]<'0')
j++;
while(x[j]>='0'&&x[j]<='9')
{
num1=num1*10+(x[j]-'0');
j++;
}
while(x[j]>'9'||x[j]<'0')
j++;
while(x[j]>='0'&&x[j]<='9'&&j<strlen(x))
{
num2=num2*10+(x[j]-'0');
j++;
}
if(x[0]=='a')
dq=1;//+
if(x[0]=='b')
dq=2;//-
if(x[0]=='c')
dq=3;//*
}
else
{
int j=0;
while(x[j]>='0'&&x[j]<='9')
{
num1=num1*10+(x[j]-'0');
j++;
}
j++;
while(x[j]>'9'||x[j]<'0')
j++;
while(x[j]>='0'&&x[j]<='9'&&j<strlen(x))
{
num2=num2*10+(x[j]-'0');
j++;
}
if(x[0]=='a')
dq=1;//+
if(x[0]=='b')
dq=2;//-
if(x[0]=='c')
dq=3;//*
}
char k;
int ans;
if(dq==1)
{
k='+';
ans=num1+num2;
}
if(dq==2)
{
k='-';
ans=num1-num2;
}
if(dq==3)
{
k='*';
ans=num1*num2;
}
printf("%d%c%d=%d\n",num1,k,num2,ans);
int ans2=0;
while(num1>0)
{
num1/=10;
ans2++;
}
while(num2>0)
{
num2/=10;
ans2++;
}
if(ans<0)
{
ans=-ans;
ans2++;
}
while(ans>0)
{
ans/=10;
ans2++;
}
printf("%d\n",ans2+2);
}
int main()
{
scanf("%d",&n);
getchar();
while(n--)
work();
}
本地没问题但是交了RE这是为什么
by Xy_top @ 2022-11-04 18:14:27
@林震安 为什么要用字符串做啊,直接cin >> c >> a >> b就行了啊
by 林震安 @ 2022-11-04 18:17:53
就是为了练练嘛@stdios
by 林震安 @ 2022-11-04 18:18:24
手动增加难度
by Xy_top @ 2022-11-04 18:28:47
@林震安
cin.getline(x,9999);
感觉这句怪怪的
by 林震安 @ 2022-11-04 18:29:43
我也觉得@stdios
by SEAN2022NAES @ 2022-12-04 11:53:47
你这个要调试啊, 多写一点注释答案就出来了, 自己写注释,写着写着答案就暴露出来了