[机房测试]整除排列

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 的数即可。

原文地址:https://www.cnblogs.com/wwlwQWQ/p/15201813.html