特判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;
}