蒟蒻代码在本机可以正常运行,但不知为什么到洛谷上就答案错误了。请dalao解答一二。多谢!!!
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
char end[100001],top=0;
cin>>s;
int len=s.size(),i,j;
if(len%8!=0)
{
cout<<"Error";
return 0;
}
for(i=0;i<len;i++)
{
if(s[i]!='0'&&s[i]!='1')
{
cout<<"Error";
return 0;
}
}
for(i=0;i<len/8;i++)
{
if(s[i*8]=='1'&&s[i*8+1]=='0'&&s[i*8+2]=='1')
{
int num=0;
for(j=i*8+3;j<=i*8+7;j++)
num+=pow(2,(i*8+7-j))*(int)(s[j]-'0');
if(num>=26)
{
cout<<"Error";
return 0;
}
else end[++top]=(char)(num+65);
}
else if(s[i*8]=='1'&&s[i*8+1]=='1'&&s[i*8+2]=='1')
end[++top]=' ';
else if(s[i*8]=='0'&&s[i*8+8]=='0')
{
if(i==len/8-1)
{
cout<<"Error";
return 0;
}
int numa=0,numb=0;
for(j=i*8+1;j<=i*8+7;j++)
numa+=pow(2,(i*8+7-j))*(int)(s[j]-'0');
i++;
for(j=i*8;j<=i*8+7;j++)
numb+=pow(2,(i*8+7-j))*(int)(s[j]-'0');
int ans=(numa/2+numb/2);
if(ans==0)end[++top]='0';
else
{
int pp=ans,p=0;
while(pp>0)
{
pp/=10;
p++;
}
for(j=1;j<=p;j++)
{
int k=pow(10,p-j);
end[++top]=(char)(ans/k+'0');
ans=ans%k;
}
}
}
else
{
cout<<"Error";
return 0;
}
}
for(i=1;i<=top;i++)cout<<end[i];
return 0;
}