题意
做法
结论1:结果是整数或整数+(frac{1}{2})
证明:
假设(n)个数对应线性基的大小为(base)
考虑对于任意能表示出来的数(x),对于除线性基外元素的任意(2^{n-base})种取法后,在线性基里取,都有唯一一种方法将(x)表示出来
故每个数出现的方案数均为(2^{n-base}),出现的概率为(2^{-base})
则(ans=(sumlimits_{x能被线性基表示}x^k) imes 2^{-base})
(x^k=(sum 2^{x_i})^k),其中(x_i)表示的是(x)的有效位
每个括号内选取一个单项式,即(2^{sumlimits_{i=1}^k a_i})
若(|{a}|=c),我们抛开其他所有位置,单纯看({a}),有(2^{base-c})个(x)中有({a}),贡献就为(2^{sumlimits_{i=1}^k a_i} imes 2^{base-c} imes 2^{base}=2^{sumlimits_{i=1}^k a_i} imes 2^{-c})
而(|{a}|=c),若不是整数,只有两种情况:(c=1,{a}={0});(c=2,{a}={0,1})
再来考虑这道题
- (k=1):
单独考虑每一位上的(1),我们都有(2^{n-base} imes 2^{base-1}=2^{n-1})中方法取到,概率为(2^{-1})
答案即为(sum 2^i imes 2^{-1})(其中(i)为线性基上存在第(i)位) - (k=2):
(ans=sumsum 2^{i+j}P_{i,j})((P_{i,j})是系数),与(k=1)类似 - (kge 3):
考虑边界情况(k=3),由于答案(<2^{63}),仅考虑({a}=1,{a}={base-1})的情况
(2^{3(base-1)} imes 2^{-1}<2^{63}),故(basele 22),而因为我们仅考虑了一种可能的(x),所以实际情况的(base)比这还要小很多
所以我们可以暴力枚举(2^{base})种可能的(x),再统计(sum x^k imes 2^{-base})
而(x^k)可能会很大,但(x^k imes 2^{-base}<2^{63}),所以我们实际在程序中将(x)表示为(a imes 2^{-base}+b)的形式