1 条题解

  • 1
    @ 2024-7-17 10:17:27

    这题考察了二进制的知识点

    首先考虑极其特殊的情况:

    1. x=yx=y 时,什么操作都不用做,直接输出 00
    2. x,yx,y 不相等的情况下 x=0x=0,那么无论怎么操作,yy 都不可能发生任何变化,所以输出 1-1

    在此之外的情况,我们每次都只选择 11,要操作的次数就是 xy|x-y|

    #include<bits/stdc++.h>
    using namespace std;
    long long a=0,b=0,out=1;
    int main(){
       string x,y;
       cin>>x;
       cin>>y;
       if(x==y){
          cout<<0;
          return 0;
       }
       if(x=="0"){
          cout<<-1;
          return 0;
       } 
       for(int i=x.length()-1;i>=0;i--){
          a+=int(x[i]-'0')*out;
          out*=2;
       }
       out=1;
       for(int i=y.length()-1;i>=0;i--){
          b+=int(y[i]-'0')*out;
          out*=2;
       }
       cout<<abs(a-b);
       return 0;
    }
    
    • 1

    信息

    ID
    495
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    51
    已通过
    17
    上传者