#JLT08B. 2026年J组模拟赛10连测第8场-T2 程老师的特征码

2026年J组模拟赛10连测第8场-T2 程老师的特征码

项目 说明
目录 xor
可执行文件名 xor.cpp
输入文件 xor.in
输出文件 xor.out
每个测试点时限 1.0 秒
内存限制 512 MiB
测试点数目 20
测试点是否等分 是

题目描述

程老师手头有一批做实验用的采集设备。设备一旦开机,就一秒一次地把当次测到的传感值报出来,报满 nn 秒为止。每个传感值都是一个不小于 00、小于 2202^{20} 的整数,一秒一个,按报出的先后排成一行。程老师要在这行数据里找出他关心的特征段。

一段连续时段指的是这行数据里从第 ll 秒到第 rr 秒的一整段,其中 1≤l≤r≤n1 \le l \le r \le n。一段连续时段是不是特征段,只看一件事:把这段里的所有传感值按位异或起来,结果恰好等于程老师给定的整数 kk。

按位异或是对两个整数做的运算:把两个数都写成二进制,从低位对齐后逐位比较,同一位上两个数字相同(都是 0 或者都是 1),结果的这一位就是 0;两个数字不同,结果的这一位就是 1。一段里有多个传感值时,从第一个开始依次做下去,先后顺序不影响结果。

程老师想知道,这 nn 秒里一共有多少段连续时段是特征段。两段连续时段只要起止秒数不完全相同,就算作不同的两段。

输入格式

从文件 xor.in 中读入数据。

第一行两个整数 n,kn, k。

第二行 nn 个整数 a1,a2,…,ana_1, a_2, \dots, a_n,依次表示每一秒报出的传感值。

输出格式

输出到文件 xor.out 中。

一行一个整数,表示特征段的个数。答案可能超过 3232 位整数范围。

数据范围

对于所有测试数据,保证:

  • 1≤n≤1051 \le n \le 10^5;
  • 0≤ai<2200 \le a_i < 2^{20};
  • 0≤k<2200 \le k < 2^{20}。
测试点 n≤n \le 特殊性质
1~2 100100 无
3~6 20002000
7~10 30003000
11~18 10510^5
19 A
20 B

特殊性质 A:k=0k = 0。

特殊性质 B:每个传感值都小于 1616。

4 3
1 2 3 4
2
3 0
5 5 7
1

样例解释

样例 1:k=3k = 3,逐段核对。只含一秒的段里,a3=3a_3 = 3 等于 kk,另外三个分别是 1,2,41, 2, 4,都不等于 kk。含两秒的段里,a1⊕a2=1⊕2=3a_1 \oplus a_2 = 1 \oplus 2 = 3 等于 kk;a2⊕a3=2⊕3=1a_2 \oplus a_3 = 2 \oplus 3 = 1,a3⊕a4=3⊕4=7a_3 \oplus a_4 = 3 \oplus 4 = 7,都不等于 kk。含三秒的段:1⊕2⊕3=01 \oplus 2 \oplus 3 = 0,2⊕3⊕4=52 \oplus 3 \oplus 4 = 5,都不等于 kk。含四秒的段:1⊕2⊕3⊕4=4≠31 \oplus 2 \oplus 3 \oplus 4 = 4 \ne 3。所以特征段是第 11 到第 22 秒、第 33 到第 33 秒这两段,共 22 段。

样例 2:k=0k = 0,要看异或结果为 00 的段。只含一秒的三段分别是 5,5,75, 5, 7,都不为 00。第 11 到第 22 秒这一段,5⊕5=05 \oplus 5 = 0,是特征段;第 22 到第 33 秒这一段,5⊕7=25 \oplus 7 = 2;整段 5⊕5⊕7=75 \oplus 5 \oplus 7 = 7。共 11 段。

难度 未评定
通过率 —
尝试 0
通过 0
ID
3758
类型
传统题
Time Limit
1000ms
Memory Limit
512MiB
上传者

相关