0
点赞
收藏
分享

微信扫一扫

Codeforces Round #173 (Div. 2) / 282C XOR and OR (字符串处理)



C. XOR and OR



http://codeforces.com/problemset/problem/282/C



time limit per test



memory limit per test



input



output


The Bitlandians are quite weird people. They do everything differently. They have a different alphabet so they have a different definition for a string.

0" and "1".

a, and applies several (possibly zero) operations to it. In one operation the mayor may take any two adjacent characters of a string, define one of them as x and the other one as y. Then he calculates two values p and qp = x xor yq = x or y. Then he replaces one of the two taken characters by p and the other one by q.

xor operation means the bitwise excluding OR operation. The or

11 to string 10 or to string 01. String 1

a and b. Your task is to check if it is possible for BitHaval to transform string a to string b


Input



a, the second line contains Bitlandish string b. The strings can have different lengths.

106.


Output



YES" if a can be transformed into b, otherwise print "NO". Please do not print the quotes.


Sample test(s)



input



11 10



output



YES



input



1 01



output



NO



input



000 101



output



NO



有如下变换:

1. 11<-->10

2. 11<-->01

3. 00-->00


由1和2知

4. 01<-->10

所以,只要两边长度相等,且两边都为0或者两边都有1,就输出"YES",其他为"NO"。


完整代码:

/*62ms,1900KB*/

#include<cstdio>
#include<cstring>
const int maxn = 1000001;

char a[maxn], b[maxn];

int main(void)
{
	bool chk1 = false, chk2 = false;
	gets(a);
	gets(b);
	int len1 = strlen(a), len2 = strlen(b), i;
	if (len1 != len2)
		printf("NO");
	else
	{
		for (i = 0 ; i < len1 && a[i] == '0' ; i++)
			;
		if (i < len1)
			chk1 = true;
		for (i = 0 ; i < len1 && b[i] == '0' ; i++)
			;
		if (i < len1)
			chk2 = true;
		printf(!chk1 && chk2 || chk1 && !chk2 ? "NO" : "YES");
	}
	return 0;
}


Haskell:

import qualified Data.ByteString.Char8 as B

main :: IO ()
main = putStrLn . solve . B.lines =<< B.getContents

solve :: [B.ByteString] -> String
solve (a : b : _)
  | B.length a == B.length b && B.elem '1' a == B.elem '1' b = "YES"
  | otherwise = "NO"



举报

相关推荐

0 条评论