Logo zibenlun 的博客

博客

一道简单到家的黄题

...
zibenlun
2025-12-01 12:58:15
分块好啊

本文章由 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;
}


点个赞再走吧~

评论

暂无评论

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。