时间限制:C/C++/Rust/Pascal 4秒,其他语言8秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
VMware实习生小V有一个序列。
她会多次告诉你一个数x,并且询问你序列中是否存在数字y与x相似。
x,y相似当且仅当x xor y的二进制表示中1的个数小于等于3个。
为了减小输入文件的体积,序列采取本地生成的方式。迭代算法为:
uint64_t G(uint64_t x) {
x^=x<<13;
x^=x>>7;
x^=x<<17;
return x;
}
输入描述:
第一行输入)
,表示序列的长度和询问的数目。
接下来一行有一个数字
![]()
)
,表示序列中的元素为
接下来m行,每行有一个数字
![]()
)
,表示一组询问。
输出描述:
为了避免输出文件过大,记第
i组询问的答案为
,当结果为存在时![]()
,否则![]()
(询问下标从0开始)。请输出![]()
%5Cbmod%20998244353)
示例1
输入
复制
5 5
5188246119645849747
12176634967126635378
1502089823584721476
10167816335444882972
5197253318900460179
10311929324497483284