如何评价我这种脑瘫
查看原帖
如何评价我这种脑瘫
590864
Yizhixiaoyun楼主2022/10/30 17:16

考试的时候忘了 & 优先级大于 |

奔着 7575 打的,只拿了 2020

#include<bits/stdc++.h>
using namespace std;
int n;
int cnt1,cnt2,ans; 
string s;
void subtask1(){
	if(s[2]=='&'){
		ans=((s[1]-48)&(s[3]-48));
		if(s[1]=='0') cnt1=1;
	}
	else if(s[2]=='|'){
		ans=((s[1]-48)|(s[3]-48));
		if(s[1]=='1') cnt2=1;
	}
	cout<<ans<<endl<<cnt1<<" "<<cnt2;
	exit(0);
}
void subtask2(){
	bool flag=false;
	for(register int i=1;i<=n;++i){
		if(s[i]=='('){
			flag=true;break;
		}
	}
	if(flag==false){
		if(s[2]=='&'){
			ans=((s[1]-48)&(s[3]-48));
			if(s[1]=='0') cnt1++;
		}
		else if(s[2]=='|'){
			ans=((s[1]-48)|(s[3]-48));
			if(s[1]=='1') cnt2++;
		}
//		cout<<ans<<endl;
		if(s[4]=='&'){
			if(ans==0) cnt1++;
			ans&=(s[5]-48);
		}
		else if(s[4]=='|'){
			if(ans==1) cnt2++;
			ans|=(s[5]-48);
		}
	}
	else{
		if(s[3]=='&'){
			ans=((s[2]-48)&(s[4]-48));
			if(s[2]=='0') cnt1++;
		}
		else if(s[3]=='|'){
			ans=((s[2]-48)|(s[4]-48));
			if(s[2]=='1') cnt2++;
		}
	}
	cout<<ans<<endl<<cnt1<<" "<<cnt2;
	exit(0);
}
void subtask3_sp1(){
	string ss;
	for(register int i=1;i<=n;++i){
		if(s[i]=='('||s[i]==')') continue;
		ss+=s[i];
	}
	int len=ss.size();ss=" "+ss;
	if(ss[1]=='1') cnt2++;
	ans=(ss[1]-48)|(ss[3]-48);
	for(register int i=4;i<=len;i+=2){
		if(ans==1) cnt2++;
		ans|=(ss[i+1]-48);
	}
}
void subtask3_sp2(){
	string ss;
	for(register int i=1;i<=n;++i){
		if(s[i]=='('||s[i]==')') continue;
		ss+=s[i];
	}
	int len=ss.size();ss=" "+ss;
	if(ss[1]=='0') cnt1++;
	ans=(ss[1]-48)&(ss[3]-48);
	for(register int i=4;i<=len;i+=2){
		if(ans==0) cnt1++;
		ans&=(ss[i+1]-48);
	}
}
void subtask3_sp3(){
	if(s[2]=='&'){
		if(s[1]=='0') cnt1++;
		ans=((s[1]-48)&(s[3]-48));
	}
	else if(s[2]=='|'){
		if(s[1]=='1') cnt2++;
		ans=((s[1]-48)|(s[3]-48));
	}
	for(register int i=4;i<=n;i+=2){
		if(s[i]=='&'){
			if(ans==0) cnt1++;
			ans&=(s[i+1]-48);
		}
		else if(s[i]=='|'){
			if(ans==1) cnt2++;
			ans|=(s[i+1]-48);
		}
	}
}
void cj(){
	ans=0;cnt1=cnt2=n/3;
}
int main(){
	//freopen("expr.in","r",stdin);
	//freopen("expr.out","w",stdout);
	cin>>s;n=s.size();s=" "+s;
	
	if(n==3) subtask1();
	else if(n==5) subtask2();
	
	int pd=0;
	for(register int i=1;i<=n;++i){
		if(s[i]=='&') pd=1;
	}
	if(pd==0) subtask3_sp1();
	pd=0;
	for(register int i=1;i<=n;++i){
		if(s[i]=='|') pd=1;
	}
	if(pd==0) subtask3_sp2();
	pd=0;
	for(register int i=1;i<=n;++i){
		if(s[i]=='(') pd=1;
	}
	if(pd==0) subtask3_sp3();
	cout<<ans<<endl<<cnt1<<" "<<cnt2;
}
2022/10/30 17:16
加载中...