#qm01. 二进制串
二进制串
题目描述:
给定一个长度为 的 01 串 。你需要向每两个相邻的数字 与 之间(共 个位置)各插入一个位运算符,使得生成的表达式最终运算结果为 。
可供选择的运算符共有三种,其运算规则如下:
- 按位与(&):对于表达式 ,当且仅当 且 时,结果为 ;否则为 。
- 按位异或(^):对于表达式 ^ ,当且仅当 与 不相同时,结果为 ;否则为 。
- 按位或(|):对于表达式 ,当且仅当 且 时,结果为 ;否则为 。
注意,本题位运算优先级与 C 语言一致,规则如下:
- 按位与(&)的优先级最高。
- 按位异或(^)的优先级低于按位与,但高于按位或。
- 按位或(|)的优先级最低。
- 对于优先级相同的运算,按照自左向右的顺序结合计算。
你需要构造出一组合法的运算符序列,使得整个表达式最终的运算结果等于0。如果存在多种方案,输出任意一种即可。可以证明对于所有合法的输入总能找到至少一组合法的构造方案。
输入格式:
输入第一行包含一个正整数 ,表示字符串的长度。
第二行包含一个长度为 且仅由字符 0 和 1 组成的字符串 。
输出格式:
输出一行一个长度为 的字符串,代表依次插入的运算符(由字符 &、^、| 组成)。
输入样例 1:
3
000
输出样例 1:
&&
样例说明 1:
样例中原串为 000 ,可在中间加入两个按位与使表达式变为 0&0&0 ,其结果为 0 ,因此输出 && 。