40分求助!
查看原帖
40分求助!
598875
nikodo楼主2023/12/30 10:19

4 AC,6 WA

#include<bits/stdc++.h>
using namespace std;
int len_a,len_b;
string s,s1;
int ans=0,ans1=0;
map<int,bool> mp;
int main(){
	cin>>s>>s1;
	len_a=s.length();len_b=s1.length();
	for(int i=0;i<len_a;i++)ans=ans*2+s[i]-'0';
	for(int i=0;i<len_b;i++)ans1=ans1*3+s1[i]-'0';
	int tmp=1;
	for(int i=len_b-1;i>=0;i--){
		if(s1[i]=='0')
			mp[ans1+tmp]=mp[ans1+tmp+tmp]=1;
		else if(s1[i]=='1')
			mp[ans1-tmp]=mp[ans1+tmp]=1;
		else
			mp[ans1-tmp-tmp]=mp[ans1-tmp]=1;
		tmp*=3;
	}
	tmp=1;
	for(int i=len_a-1;i>=0;i--){
		if(s[i]=='0')
			if(mp[ans+tmp]){
				cout<<ans+tmp;
				return 0;
			}
		else
			if(mp[ans-tmp]){
				cout<<ans-tmp;
				return 0;
			}
		tmp*=2;
	}
}
2023/12/30 10:19
加载中...