欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
CF2234D.XOR, Expression and Two Binary Numbers
XOR, Expression and Two Binary Numbers
题目描述
给定整数 。存在一个由 位二进制数构成的序列 。其中 与 已知,其余位置数值未知。我们分 轮按照如下规则填充所有未知数值:
第一,假设第 轮开始前,已经填充完毕的下标为 。第一轮开始前仅下标 有数值。
第二,对每个 ,执行赋值
$$a_{\frac{p_j+p_{j+1}}{2}} := a_{p_j} \oplus a_{p_{j+1}}$$第三,所有赋值操作同时进行,操作完成后这些新下标也变为已填充状态。
可以证明,该过程一定能填满整个序列。
以 为例,初始 : 第一步,第一轮前仅 有值,计算
$$a_3 = a_1 \oplus a_5 = \texttt{010} \oplus \texttt{110} = \texttt{100}$$第二步,第二轮前已填充下标为 ,同步算出
$$a_2 = a_1 \oplus a_3 = \texttt{110},\quad a_4 = a_3 \oplus a_5 = \texttt{010}$$你需要计算表达式:
其中 表示 中二进制位为 的数量, 表示 中二进制位为 的数量。
注: 表示两数按位异或。
输入格式
本题包含多组测试数据。第一行输入整数 ,满足
$$1 \le t \le 10^4,\quad 1 \le n \le 10^5,\quad 1 \le k \le 30$$代表测试数据组数。
每组测试数据描述如下: 第一行两个整数 ,分别代表二进制数的位数、控制序列长度的参数。 第二行输入长度为 的二进制字符串 ,代表 。 第三行输入长度为 的二进制字符串 ,代表 。
保证所有测试数据的 之和不超过 。
输出格式
对每组测试用例,输出题目中表达式的计算结果。
说明/提示
第一组测试用例的填充过程已在题目描述中给出,最终序列为 $[\texttt{010}, \texttt{110}, \texttt{100}, \texttt{010}, \texttt{110}]$。代入表达式计算:
$$1 \cdot 2 + 2 \cdot 1 + 1 \cdot 2 + 1 \cdot 2 + 2 \cdot 1 = 10$$第二组测试用例中,第一轮算出
$$a_2 = a_1 \oplus a_3 = \texttt{0} \oplus \texttt{0} = \texttt{0}$$整个序列所有数均为 ,表达式结果为 。
样例
4
3 2
010
110
1 1
0
0
2 2
01
00
7 30
1010111
0011010
10
0
3
12169074016
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |