题目数据有问题???
查看原帖
题目数据有问题???
144032
zlw233楼主2020/10/17 14:48

蒟蒻代码在本机可以正常运行,但不知为什么到洛谷上就答案错误了。请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;
}
2020/10/17 14:48
加载中...