题意
给定(n)个数字(a_i)及(s),要求无序选择(k)个,(b_1oplus b_2oplus ...oplus b_k=s)。(a_ile 5 imes 10^4,nle 10^6,kle 4)
做法
令(g_i)为gcd为(i)的方案数
(ans=sumlimits_{i=1}^V ig_i)
令(f_i)为gcd为(i)的倍数的方案数
则(ans=sumlimits_{i=1}^V phi(i)f_i)
可以钦定一个阀值(m)
当(ile m)时有效值较多,fwt,较小时折半暴力
有些细节,容斥一下
(O(mVlogV),O(sumlimits_{i=m+1}^V (frac{V}{i})^2))
积分一下,可以求出(m)大概取(50)最优