一个异或门有两组输入并产生一组输出:
如果一个有 个输入 个输出的由异或门构成的系统满足下列条件,那么称它为异或网络:
- 网络的每个输入端和至少一个异或门的输入端相连接;
- 每个异或门的输入端和网络的输入端或者某个异或门的输出端相连;
- 只有一个异或门的输出端和网络的输出端相连;
- 每个异或门的输出端要么和至少一个异或门的输入端相连,要么和网络的输出端相连;
- 存在一个对异或门的编号方式,使得对每个异或门的每个输入端都连接到网络的输入端或者一个编号更小的异或门的输出端。
一个网络的输入端从 到 编号。每个引脚的高低电位由一个长度为 的 01 字符串给定。我们假设第 个字符代表着第 个输入引脚的电位。对于每一组输入电位,网络产生一个输出电位,用 01 表示。注意到每组输入的字符串都是一个代表自然数的二进制串,所以我们可以把输入的字符串按照它们代表的自然数的大小排序。我们会发送固定范围内的自然数到输入端,然后记下有多少次返回了 。
你的任务:
写一个程序:
- 读入关于异或网络的描述:输入引脚数量 ,异或门数量 ,连接到网络的输出引脚的异或门编号,以及异或门的连接方式;
- 读入两个长度为 的二进制串,代表上下区间;
- 计算区间内有多少组输入会使网络返回 ;
- 输出答案。