50分 错的点都是没输出
查看原帖
50分 错的点都是没输出
661448
封禁用户楼主2024/10/4 19:25
#include<bits/stdc++.h>
using namespace std;
#define int long long
int cal(string a,int g)
{
	int sum=0,l=1;
	for(int i=a.length()-1;i>=0;i--){
		sum+=l*(a[i]-'0');
		l*=g;
	}
	return sum;
}
signed main()
{
	string a,b;
	cin>>a>>b;
	int s1=cal(a,2),s2=cal(b,3);
	cout<<s1<<" "<<s2<<endl; 
	for(int i=0;i<a.length();i++){
		for(int j=0;j<b.length();j++)
		{
			int base1=pow(2,a.length()-1-i),base2=pow(3,b.length()-1-j);
			int delta,del;
			if(a[i]=='0')delta=base1;
			else delta=-1*base1;		
			if(b[i]!='0'){
				del=('0'-b[i])*base2;
				if(s1+delta==s2+del){
					cout<<s1+delta<<endl;
					return 0;
				}
			}
			if(b[i]!='1'){
				del=('1'-b[i])*base2;
				if(s1+delta==s2+del)
				{
					cout<<s1+delta<<endl;
					return 0;
				}
			}
			if(b[i]!='2')
			{
				del=('2'-b[i])*base2;
				if(s1+delta==s2+del){
					cout<<s1+delta<<endl;
					return 0;
				}
			}
		}
	}
}
2024/10/4 19:25
加载中...