本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2023-08-10 09:01:17
题意理解
给定两个字符串,通过相邻两位的异或和或运算,使一个字符串变成另一个。
思路
本题的关键是或运算,因为或运算的结果都是 $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;
}
点个赞再走吧~

鲁ICP备2025150228号