SP22774 HK - Help Kejriwal

题目描述

在大学时期,Kejriwal 先生渴望在情人节与一位计算机科学系的女生约会。这位女生极具个性,她决定以编程比赛的方式来选择约会对象(是的,她就是这么喜欢挑战)。比赛中只有一道题目,内容如下: 给定 $n$ 个数 $a_1, a_2, \ldots, a_n$。有两个概率函数 $f(x)$ 和 $g(x)$。函数 $f(x)$ 会以相等的概率返回 0 或 1。函数 $g(x)$ 会以相等的概率翻转 $x$ 的任意一位,其中 $x$ 是一个32位的无符号整数。 定义函数 $h()$ 为: $$ h() = f(a_1) \cdot g(a_1) + f(a_2) \cdot g(a_2) + \cdots + f(a_n) \cdot g(a_n) $$ 请计算 $h()$ 等于 $m$ 的方案总数。因为这个值可能非常大,请输出它对 $1000000007$ 取模后的结果。(可以参考样例解释,理解方案的不同定义。)同时,还要计算 $h()$ 的期望值,并精确到小数点后6位。 Kejriwal 先生对编程不太感兴趣,也并不擅长。请帮助他在比赛中胜出,从而实现他在情人节的约会愿望。

输入格式

第一行是整数 $t$,表示有 $t$ 组测试数据。 每组测试数据的第一行包含两个整数 $n$ 和 $m$。 接下来的第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$。

输出格式

输出 $t$ 行结果,每行对应一组测试数据。 每行结果包含两个数字,中间用空格隔开。第一个数字是 $h()$ 等于 $m$ 的方案总数,对 $1000000007$ 取模后的结果。第二个数字是 $h()$ 的期望值,精确到小数点后6位。

说明/提示

- $1 \le t \le 50$ - $1 \le n \le 500$ - $0 \le m \le 1000$ - $0 \le a_i \le 1000000000$ ## 样例输入 ``` 2 2 3 1 2 1 0 4 ``` ## 样例输出 ``` 66 134217729.375000 33 67108865.859375 ``` **本翻译由 AI 自动生成**