Greeper @ 2024-07-25 15:20:51
刚发完函数就WA
#include<bits/stdc++.h>
using namespace std;
int n;
string a,b,c,d;
char f;
int math(string a)
{
int l=a.size();
int x=0;
for(int i=0;i<l;i++)
{
x*=10;
x+=int(a[i]-'0');
}
return x;
}
string str(int a)
{
string y,x;
while(a)
{
y+=char(a%10+'0');
a/=10;
}
for(int i=y.size()-1;i>=0;i--)
{
x+=y[i];
}
return x;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a;
if(a[0]>='a'&&a[0]<='c')
{
f=a[0];
cin>>b>>c;
}
else
{
b=a;
cin>>c;
}
if(f=='a')
{
cout<<b<<'+'<<c<<'='<<math(b)+math(c)<<endl;
cout<<b.size()+c.size()+2+str(math(b)+math(c)).size()<<endl;
}
if(f=='b')
{
cout<<b<<'-'<<c<<'='<<math(b)-math(c)<<endl;
cout<<b.size()+c.size()+2+str(math(b)-math(c)).size()<<endl;
}
if(f=='c')
{
cout<<b<<'+'<<c<<'='<<math(b)*math(c)<<endl;
cout<<b.size()+c.size()+2+str(math(b)*math(c)).size()<<endl;
}
}
return 0;
}
by gat_Coding @ 2024-08-10 11:49:01
@Greeper 结果可能是负数
例如:1-9999=-9998
贴一下ac代码```cpp
using namespace std;
char y;
int i,n1[100],n2[100];
string s,b;
int size(int c=0)
{
if(c>=0&&c<10) return 1;
else if(c>=10&&c<100||c<=-1&&c>-10) return 2;
else if(c>=100&&c<1000||c<=-10&&c>-100) return 3;
else if(c>=1000&&c<10000||c<=-100&&c>-1000) return 4;
else if(c>=10000&&c<100000||c<=-1000&&c>-10000) return 5;
else if(c>=100000&&c<1000000) return 6;
else if(c>=1000000&&c<10000000) return 7;
else if(c>=10000000&&c<100000000) return 8;
else if(c>=100000000&&c<1000000000) return 9;
}
int main()
{
cin>>i;
for(int j=0;j<i;j++)
{
cin>>s;
if(s[0]>='a'&&s[0]<='c')//判断是否字符 是
{
y=s[0];
cin>>n1[j]>>n2[j];//输入两个数
b+=s;
}
else//否
{
if(s.size()==4) n1[j]=(s[0]-'0')1000 + (s[1]-'0')100 +(s[2]-'0')10 +s[3]-'0';//转换成int类型(同样枚举)
else if(s.size()==3) n1[j]=(s[0]-'0')100 + (s[1]-'0')10 +s[2]-'0';
else if(s.size()==2) n1[j]=(s[0]-'0')10 + s[1]-'0';
else n1[j]=s[0]-'0';
cin>>n2[j];
b+=y;
}
}
for(int j=0;j<b.size();j++)//输出
if(b[j]=='a')
{
cout<<n1[j]<<'+'<<n2[j]<<'='<<n1[j]+n2[j]<<endl;
cout<<size(n1[j])+size(n2[j])+size(n1[j]+n2[j])+2<<endl;
}
else if(b[j]=='c')
{
cout<<n1[j]<<''<<n2[j]<<'='<<n1[j]n2[j]<<endl;
cout<<size(n1[j])+size(n2[j])+size(n1[j]*n2[j])+2<<endl;
}
else if(b[j]=='b')
{
cout<<n1[j]<<'-'<<n2[j]<<'='<<n1[j]-n2[j]<<endl;
cout<<size(n1[j])+size(n2[j])+size(n1[j]-n2[j])+2<<endl;
}
return 0;
}
因为我也是蒟蒻(悲)所以判断长度和转换类型都是枚举(
应该可以看懂罢…
[https://www.luogu.com.cn/record/171754792](评测记录)
by gat_Coding @ 2024-08-10 11:49:59
@Greeper 洛谷怎么回事,重发一下代码
#include <bits/stdc++.h>
using namespace std;
char y;
int i,n1[100],n2[100];
string s,b;
int size(int c=0)
{
if(c>=0&&c<10) return 1;
else if(c>=10&&c<100||c<=-1&&c>-10) return 2;
else if(c>=100&&c<1000||c<=-10&&c>-100) return 3;
else if(c>=1000&&c<10000||c<=-100&&c>-1000) return 4;
else if(c>=10000&&c<100000||c<=-1000&&c>-10000) return 5;
else if(c>=100000&&c<1000000) return 6;
else if(c>=1000000&&c<10000000) return 7;
else if(c>=10000000&&c<100000000) return 8;
else if(c>=100000000&&c<1000000000) return 9;
}
int main()
{
cin>>i;
for(int j=0;j<i;j++)
{
cin>>s;
if(s[0]>='a'&&s[0]<='c')//判断是否字符 是
{
y=s[0];
cin>>n1[j]>>n2[j];//输入两个数
b+=s;
}
else//否
{
if(s.size()==4) n1[j]=(s[0]-'0')*1000 + (s[1]-'0')*100 +(s[2]-'0')*10 +s[3]-'0';//转换成int类型(同样枚举)
else if(s.size()==3) n1[j]=(s[0]-'0')*100 + (s[1]-'0')*10 +s[2]-'0';
else if(s.size()==2) n1[j]=(s[0]-'0')*10 + s[1]-'0';
else n1[j]=s[0]-'0';
cin>>n2[j];
b+=y;
}
}
for(int j=0;j<b.size();j++)//输出
if(b[j]=='a')
{
cout<<n1[j]<<'+'<<n2[j]<<'='<<n1[j]+n2[j]<<endl;
cout<<size(n1[j])+size(n2[j])+size(n1[j]+n2[j])+2<<endl;
}
else if(b[j]=='c')
{
cout<<n1[j]<<'*'<<n2[j]<<'='<<n1[j]*n2[j]<<endl;
cout<<size(n1[j])+size(n2[j])+size(n1[j]*n2[j])+2<<endl;
}
else if(b[j]=='b')
{
cout<<n1[j]<<'-'<<n2[j]<<'='<<n1[j]-n2[j]<<endl;
cout<<size(n1[j])+size(n2[j])+size(n1[j]-n2[j])+2<<endl;
}
return 0;
}