Description
给定一个排列,问存不存在这样的子集,使得异或和是零,且按顺序拼接起来成为一个大整数后是一个质数 \(p\) 的倍数。输出方案。
Solution
将几个数拼接起来,完全没有性质,可以直接将它看成是一个模 \(p\) 意义下的均匀分布,也就说完全可以将其看做是等概率随机的。那么选的数的大小都无所谓了,因为都是等价的,只需要保证异或和是 \(0\)。我们选择前 \(25\) 个数。这二十五个数不存在解的概率就是
\[(1-\frac{1}{P})^{2^{25}/32} < 10^{-9}
\]
随机选数,最后不是 \(p\) 的倍数的概率是 \(1-\frac{1}{p}\),然后有 \(2^{25}\) 种子集。如果将异或也看做是随机数,那么异或起来是 \(0\) 的情况就是总情况的 \(\frac{1}{32}\) 。
错误概率可以接受,所以我们直接暴搜小于等于 25 的数即可。