[机房测试]整除排列

Description

给定一个排列,问存不存在这样的子序列,使得其元素异或和是零,且按顺序拼接起来成为一个大整数后是一个给定质数 \(p\) 的倍数。求出使得最后拼接出的大整数最小的方案。

数据范围: \(n,p\leq 10^5\)

Solution

将几个数拼接起来,可以直接将它看成是一个模 \(p\) 意义下的均匀分布。只需要保证异或和是 \(0\)。我们只考虑值小于等于 \(26\) 的数。这二十六个数不存在解的概率是

\[(1-\frac{1}{P})^{2^{26}/32} < 10^{-8} \]

错误概率可以接受,所以我们直接暴搜序列中小于等于 26 的数即可。

posted @ 2021-08-29 07:39  Kreap  阅读(28)  评论(0编辑  收藏  举报