题目描述
对于非负整数 z 和一个非负整数集合 S ,设 fz(S)={x⊕z∣x∈S} ,即 fz(S) 为 S 中所有元素异或上 z 得到的集合。若 S=fz(S) ,则称 z 是 S 的不动点。
给定非负整数集合 S ,求 S 的所有不动点。
输入格式
输入的第一行包含一个非负整数 c ,表示子任务编号。c=0 表示该测试点为样例。
第二行有一个整数 n ,表示集合大小 ∣S∣ 。
第三行有 n 个正整数 a1,a2,…,an ,满足 S={a1,a2,…,an} 。
输出格式
第一行输出一个整数 k ,表示 S 的不动点的个数。保证不动点个数不超过 106 。
第二行输出 k 个整数,升序输出所有 S 的不动点。
样例 1 输入
0
6
0 1 2 4 5 6
样例 1 输出
2
0 4
样例 1 解释
S0={0,1,2,4,5,6}=S ,故 0 是 S 的不动点。
S1={0,1,3,4,5,7}=S ,故 1 不是 S 的不动点。
S2={0,2,3,4,6,7}=S ,故 2 不是 S 的不动点。
S3={1,2,3,5,6,7}=S ,故 3 不是 S 的不动点。
S4={0,1,2,4,5,6}=S ,故 4 是 S 的不动点。
数据范围
1≤n≤6×105,0≤ai<263 ,对于 i=j ,ai=aj 。
设 m=i=1maxn{ai} 。
本题使用捆绑测试。
| 子任务编号 |
分数 |
n |
m |
特殊性质 |
| 1 |
5 |
是奇数 |
<263 |
否 |
| 2 |
15 |
≤1500 |
| 3 |
≤6×105 |
是 |
| 4 |
25 |
<220 |
否 |
| 5 |
15 |
≤2×105 |
<263 |
| 6 |
25 |
≤6×105 |
特殊性质:设 k 为 S 的不动点个数,则 S 在所有大小为 n ,所有数小于 263 且不动点个数为 k 的集合中等概率选取。
时间限制:1s
空间限制:1024 MiB