P16617 [GKS 2017 #B] Math Encoder

题目描述

Math 教授正在从事一个秘密项目,面临一个挑战:需要将一组数字以最有效的方式编码成一个数字。经过大量研究,Math 教授发现了一个三步过程,可以最好地对这些数字进行编码: 1. 第一步,找出数字列表的所有非空子集,然后对每个子集,求出该子集中最大值与最小值的差(即最大值减去最小值)。注意,如果子集中只有一个数字,则该数字既是最大值也是最小值。整个集合本身也被视为一个子集。 2. 然后,将所有差值相加,得到最终的编码数字。 3. 由于数字可能很大,请输出该数字对 $10^9 + 7$($1000000007$)取模的结果。 教授分享了一个例子及其解释如下。给定一个数字列表,你能帮助教授构建一个高效的函数来计算最终的编码数字吗?

输入格式

输入的第一行给出测试用例的数量 $T$。接下来有 $T$ 个测试用例,每个测试用例由两行定义: 1. 第一行给出一个正整数 $N$,表示列表中数字的个数。 2. 第二行包含 $N$ 个正整数 $K_i$,按非递减顺序排列。

输出格式

对于每个测试用例,输出一行,格式为 `Case #x: y`,其中 $x$ 是测试用例编号(从 $1$ 开始),$y$ 是最终的编码数字。 由于输出可能非常大,我们只要求输出结果除以素数 $10^9 + 7$($1000000007$)的余数。

说明/提示

**样例输入的解释** 1. 找出所有子集并计算最大值与最小值的差: - [$3$],最大值 $-$ 最小值 $= 3 - 3 = 0$。 - [$6$],最大值 $-$ 最小值 $= 6 - 6 = 0$。 - [$7$],最大值 $-$ 最小值 $= 7 - 7 = 0$。 - [$9$],最大值 $-$ 最小值 $= 9 - 9 = 0$。 - [$3, 6$],最大值 $-$ 最小值 $= 6 - 3 = 3$。 - [$3, 7$],最大值 $-$ 最小值 $= 7 - 3 = 4$。 - [$3, 9$],最大值 $-$ 最小值 $= 9 - 3 = 6$。 - [$6, 7$],最大值 $-$ 最小值 $= 7 - 6 = 1$。 - [$6, 9$],最大值 $-$ 最小值 $= 9 - 6 = 3$。 - [$7, 9$],最大值 $-$ 最小值 $= 9 - 7 = 2$。 - [$3, 6, 7$],最大值 $-$ 最小值 $= 7 - 3 = 4$。 - [$3, 6, 9$],最大值 $-$ 最小值 $= 9 - 3 = 6$。 - [$3, 7, 9$],最大值 $-$ 最小值 $= 9 - 3 = 6$。 - [$6, 7, 9$],最大值 $-$ 最小值 $= 9 - 6 = 3$。 - [$3, 6, 7, 9$],最大值 $-$ 最小值 $= 9 - 3 = 6$。 2. 将上一步计算出的差值求和: $$3 + 4 + 6 + 1 + 3 + 2 + 4 + 6 + 6 + 3 + 6$$ $$= 44$$ 3. 求答案对 $10^9 + 7$($1000000007$)取模的结果: $44 \bmod 1000000007 = 44$ ### 限制条件 $1 \le T \le 25$。 对于所有 $i$,$1 \le K_i \le 10000$。 对于所有 $i < N-1$,$K_i \le K_{i+1}$。 **小数据集(测试集 1 – 可见)** $1 \le N \le 10$。 **大数据集(测试集 2 – 隐藏)** $1 \le N \le 10000$。 翻译由 DeepSeek V4 Pro 完成