dongtian @ 2023-03-15 00:14:06
#include<bits/stdc++.h>
using namespace std;
char ch1[100][1000];
int a[10000],b[100][1000];
int main()
{
int n,m,j;
char ch2;
cin>>n;
scanf("%c",&ch2);
for(int i=0;i<n;i++)
{
for(int j=0;;j++)
{
scanf("%c",&ch1[i][j]);
if(ch1[i][j]=='\n')
break;
}
}
for(int i=0;i<n;i++)
{
j=0;
if(ch1[i][0]=='a'||ch1[i][0]=='b'||ch1[i][0]=='c')
j=2;
while(ch1[i][j]<='9'&&ch1[i][j]>='0')
{
b[i][0]+=(ch1[i][j]-'0');
b[i][0]*=10;
j++;
}
b[i][0]/=10;
j++;
while(ch1[i][j]<='9'&&ch1[i][j]>='0')
{
b[i][1]+=ch1[i][j]-'0';
b[i][1]*=10;
j++;
}
b[i][1]/=10;
if(ch1[i][0]<='9'&&ch1[i][0]>='0')
{
ch1[i][0]=ch1[i-1][0];
b[i][4]+=2;
}
if(ch1[i][0]=='a')
{
b[i][3]=b[i][0]+b[i][1];
m=b[i][3];
while(m>0)
{
m/=10;
b[i][4]++;
}
b[i][5]=strlen(ch1[i])+b[i][4]-2;
cout<<b[i][0]<<"+"<<b[i][1]<<"="<<b[i][3]<<endl<<b[i][5]<<endl;
}
if(ch1[i][0]=='b')
{
b[i][3]=b[i][0]-b[i][1];
if(b[i][3]<0)
b[i][4]++;
m=sqrt(b[i][3]);
while(m>0)
{
m/=10;
b[i][4]++;
}
b[i][5]=strlen(ch1[i])+b[i][4];
cout<<b[i][0]<<"-"<<b[i][1]<<"="<<b[i][3]<<endl<<b[i][5]<<endl;
}
if(ch1[i][0]=='c')
{
b[i][3]=b[i][0]*b[i][1];
m=b[i][3];
while(m>0)
{
m/=10;
b[i][4]++;
}
b[i][5]=strlen(ch1[i])+b[i][4]-2;
cout<<b[i][0]<<"*"<<b[i][1]<<"="<<b[i][3]<<endl<<b[i][5]<<endl;
}
}
return 0;
}
by 654179_qwq @ 2023-03-15 00:21:17
@dongtian 不需要用 string 吧 , 输出的时候直接统计就行了
从网上找一份快读代码
void write(int x)
{
if(x<0)
putchar('-'),x=-x;
if(x>9)
write(x/10);
putchar(x%10+'0');
return;
}
全局变量设一个 a , 快读里 putchar
全部跟上一个 a++
统计 , 再加上 +/-/*
,=
两个字符就可以知道输出长度 , 不需要再统计
by dongtian @ 2023-03-15 12:35:29
@654179_qwq 可是是全部WA,不是TLE
by coolboydengjun @ 2023-03-17 16:56:51
int n;//4的后面有\n\r连个字符
string s;
cin>>n;
getchar();//丢\n
getchar();//丢\r
getline(cin,s);
if(s.back()=='\r') //读到的每一行都有一个\r
s.pop_back();
为了这个程序专门用vscode 在wsl-ubuntu上debug,搭建环境用了半天,linux不喜欢getline。