2023牛客暑期多校训练营3
A: World Fragments I
题意:给定两个数字的二进制表示,每次可以用x减去本身的一个1或者0,直到x变成y最少多少步,可知只要x大于0其中必定存在1,也就是 x可以转化为y,求|x - y|即可
#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef long long ll;
typedef pair<int,int> PII;
const int N = 100010;
int ptt(string s,int p){
int x = 0;
for(int i = 0; i < s.size(); i ++){
x *= p;
if(s[i] >= 'A' && s[i] <= 'Z') x += (s[i] - 'A' + 10);
else x += (s[i] - '0');
}
return x;
}
void solve(){
string s1,s2;
cin >> s1 >> s2;
if(s1 == s2){
cout << 0;
return;
}
if(s1 == "0"){
cout << -1;
return;
}
int a = ptt(s1,2),b = ptt(s2,2);
cout << abs(a - b);
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
solve();
return 0;
}