T3小图灵10分,没了
查看原帖
T3小图灵10分,没了
477464
cxq123456楼主2022/10/29 16:50

特判6种情况,有没有好心人帮我看看为什么

#include<bits/stdc++.h>
using namespace std;
string s;
int ans1,ans2;
int main()
{
	freopen("expr.in","r",stdin);
	freopen("expr.out","w",stdout);
	cin>>s;
	if(s.size()==1)
	{
		cout<<s[0]<<endl<<0<<" "<<0;
		return 0;
	}
	if(s.size()==3)
	{
		if(s[1]=='&')
		{
			cout<<((s[0]-'0')&(s[2]-'0'))<<endl;
			if(s[0]=='0') cout<<1;
			else cout<<0;
			cout<<" "<<0;
		}
		else 
		{
			cout<<((s[0]-'0')|(s[2]-'0'))<<endl;
			cout<<0<<" ";
			if(s[0]=='1') cout<<1;
			else cout<<0;
		}
		return 0;
	}
	if(s.size()==5)
	{
		if(s[1]=='|'&&s[3]=='&') 
		{
			cout<<((s[2]-'0')&(s[4]-'0')|(s[0]-'0'))<<endl;
			if(s[0]=='1') cout<<0<<" "<<1;
			else if(s[2]=='0') cout<<1<<" "<<0;
			     else cout<<0<<" "<<0;
		}
		else if(s[1]=='|'&&s[3]=='|')
		     {
			     cout<<((s[0]-'0')|(s[2]-'0')|(s[4]-'0'))<<endl;
			     if(s[0]=='1') cout<<0<<" "<<2;
			     else if(s[2]=='1') cout<<0<<" "<<1;
			          else cout<<0<<" "<<0;
		     }
		     else if(s[1]=='&'&&s[3]=='|')
		     {
			     cout<<((s[0]-'0')&(s[2]-'0')|(s[4]-'0'))<<endl;
			     if(s[0]=='0') cout<<1<<" "<<0;
			     else if(s[2]=='1') cout<<0<<" "<<1;
			          else cout<<0<<" "<<0;
		     }
		         else
		         {
		          	  cout<<((s[0]-'0')&(s[2]-'0')&(s[4]-'0'))<<endl;
			          if(s[0]=='0') cout<<2<<" "<<0;
			          else if(s[2]=='0') cout<<1<<" "<<0;
			               else cout<<0<<" "<<0;
				 }
		return 0;
	}
	int k=-1;
	while(s[++k]!='&')
		if(k==s.size()-1) break;
	if(k==s.size()-1)
	{
		bool f=false;
		for(int i=0;i<s.size();i++)
		{
			if(s[i]=='|'&&s[i-1]=='1'&&s[i+2]!=')') ans2++;
			if(s[i]=='1') f=true;
		}
		if(f) cout<<1<<endl;
		else cout<<0<<endl;
		cout<<0<<" "<<ans2;
		return 0;
	}
	k=-1;
	while(s[++k]!='|')
		if(k==s.size()-1) break;
	if(k==s.size()-1)
	{
		bool f=false;
		for(int i=0;i<s.size();i++)
		{
			if(s[i]=='&'&&s[i-1]=='0'&&s[i+2]!=')') ans1++;
			if(s[i]=='0') f=true;
		}
		if(f) cout<<0<<endl;
		else cout<<1<<endl;
		cout<<ans1<<" "<<0;
		return 0;
    }
    k=-1;
    while(s[++k]!=')')
		if(k==s.size()-1) break;
	if(k==s.size()-1)
	{
	    for(int i=0;i<s.size();i++)
	    {
	    	if(s[i]=='&'&&s[i-1]=='0') ans1++;
	    	if(s[i]=='&')
			{
				if((s[i-1]-'0')&(s[i+1]-'0')==1) s[i-1]=s[i]=s[i+1]='1';
				else s[i-1]=s[i]=s[i+1]='0';
			} 
		}
		for(int i=0;i<s.size();i++)
		{
			if(s[i]=='|'&&s[i-1]=='1') ans2++;
			if(s[i]=='|')
			{
				if((s[i-1]-'0')|(s[i+1]-'0')==1) s[i-1]=s[i]=s[i+1]='1';
				else s[i-1]=s[i]=s[i+1]='0';
			} 
		}
		cout<<s[s.size()-1]<<endl<<ans1<<" "<<ans2;
		return 0;
	}
	cout<<0<<endl<<2<<" "<<3;
	return 0;
}
2022/10/29 16:50
加载中...