@[百因必有AC](/user/113097) 这是我的AC代码:
```
#include<bits/stdc++.h>
using namespace std;
string s,t;
int a,b,ans=0,sum,n;
int len(int x)
{
int t=x,ans=0;
if(x==0)return 1;
while(t)
{
ans++;
t/=10;
}
return ans;
}
int zh(string x)
{
int ans=0;
for(int i=0;i<x.size();i++)
{
ans*=10;
ans+=(x[i]-'0');
}
return ans;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
cin>>s;
if(s=="c")
{
scanf("%d%d",&a,&b);
sum=a*b;
ans+=(len(a)+len(b)+len(sum));
printf("%d*%d=%d\n%d\n",a,b,sum,ans+2);
t=s;
ans=0;
}
else
{
if(s=="b")
{
scanf("%d%d",&a,&b);
sum=a-b;
ans+=(len(a)+len(b)+len(sum));
if(a>=b)
printf("%d-%d=%d\n%d\n",a,b,sum,ans+2);
else printf("%d-%d=%d\n%d\n",a,b,sum,ans+3);
t=s;
ans=0;
}
else
{
if(s=="a")
{
scanf("%d%d",&a,&b);
sum=a+b;
ans+=(len(a)+len(b)+len(sum));
printf("%d+%d=%d\n%d\n",a,b,sum,ans+2);
t=s;
ans=0;
}
else
{
a=zh(s);
scanf("%d",&b);
if(t=="b")
{
sum=a-b;
ans+=(len(a)+len(b)+len(sum));
if(a>=b)
printf("%d-%d=%d\n%d\n",a,b,sum,ans+2);
else printf("%d-%d=%d\n%d\n",a,b,sum,ans+3);
ans=0;
}
if(t=="a")
{
sum=a+b;
ans+=(len(a)+len(b)+len(sum));
printf("%d+%d=%d\n%d\n",a,b,sum,ans+2);
ans=0;
}
if(t=="c")
{
sum=a*b;
ans+=(len(a)+len(b)+len(sum));
printf("%d*%d=%d\n%d\n",a,b,sum,ans+2);
ans=0;
}
}
}
}
}
return 0;
}
```
希望能有所帮助!
by Tune_ @ 2020-04-11 17:11:10
加上long,有两个测试点在目标环境下的int只有两个字节,存不下结果的zhi
by 21wang12 @ 2020-04-16 18:11:15