一道简单到家的黄题

· · 题解

题意理解

给定两个字符串,通过相邻两位的异或和或运算,使一个字符串变成另一个。

思路

本题的关键是或运算,因为或运算的结果都是 1,所以只要有了一个 1,那么所有的 0 就都能够变成 1,所以我们可以得出结论,只要 B 字符串中有 1,那么 A 中必须也有一个 1,不然就不能变成 B 串。

你们最爱看的代码:

#include<bits/stdc++.h>
using namespace std;
//快读,快写
inline int read(){
    int s=0;
    char ch=getchar();
    while(ch<'0'||ch>'9') ch=getchar();
    while(ch>='0'&&ch<='9'){
        s=(s<<3)+(s<<1)+(ch^48);
        ch=getchar();
    }
    return s;
}
inline void write(long long x){
    if(x<0) putchar('-'),x=-x;
    if(x>9) write(x/10);
    putchar(x%10+'0');
}
int main(){
//  freopen(".in","r",stdin);
//  freopen(".out","w",stdout);
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    string a,b;
    cin>>a>>b;
    if(a.size()!=b.size()){
        cout<<"NO";
        return 0;
    }
    int flaga=0,flagb=0;
    for(int i=0;i<a.size();i++){
        if(a[i]=='1') flaga=1;
        if(b[i]=='1') flagb=1;
    }
    if(flagb==1&&flaga==0 || flaga==1&&flagb==0) cout<<"NO";
    else cout<<"YES";
    return 0;
}

点个赞再走吧~