我添加规定,A1、A2、A3 必须在不知道 B 的情况下从 A 计算出来,同样,B1、B2 和 B3 必须在不知道 A 的情况下计算出来。
每个 A1 i、 A2 i、 A3 i必须在 [A i /3–2, A i /3+2] 中的要求意味着 A1、A2 和 A3 的元素之和必须各自大致为 1- A 的第三个。该规定迫使我们完全定义这一点。
我们将以任何顺序(例如,从元素 0 到最后一个元素)构造数组。当我们这样做时,我们将确保阵列几乎保持平衡。
设 x 是 A 中要处理的下一个元素。设 a 为圆形 (x/3)。要考虑 x,我们必须将总共 3•a+r 附加到数组 A1、A2 和 A3,其中 r 是 –1、0 或 +1。
令 d 为 sum(A1) – sum(A)/3,其中总和是迄今为止处理的元素的总和。最初,d 为零,因为没有处理任何元素。根据设计,我们将确保 d 在每个步骤中为 –2/3、0 或 +2/3。
将如下所示的三个值分别附加到 A1、A2 和 A3 中:
- 如果 r 为 –1 且 d 为 –2/3,则追加 a+1、a–1、a–1。这将 d 更改为 +2/3。
- 如果 r 为 –1 且 d 为 0,则追加 a–1、a、a。这会将 d 更改为 –2/3。
- 如果 r 为 –1 且 d 为 +2/3,则追加 a–1、a、a。这将 d 更改为 0。
- 如果 r 为 0,则追加 a、a、a。这使 d 保持不变。
- 如果 r 为 +1 且 d 为 –2/3,则追加 a+1、a、a。这将 d 更改为 0。
- 如果 r 为 +1 且 d 为 0,则追加 a+1、a、a。这将 d 更改为 +2/3。
- 如果 r 为 +1 且 d 为 +2/3,则追加 a–1、a+1、a+1。这会将 d 更改为 –2/3。
最后,A1、A2 和 A3 的和由 A 模三的和唯一确定。A1 的和是 (sum(A3)–2)/3、sum(A3)/3 或 (sum(A3)+2)/3,取决于 A 的模三之和是否等于 –1、0 ,或+1,分别。
完成演示:
在任何情况下,a–1、a 或 a+1 都会附加到数组中。a 是 round(x/3),因此它与 x/3 的差小于 1,因此 a–1、a 和 a+1 与 x/3 的差均小于 2,满足值必须在 [A i /3–2, A i /3+2] 中。
当 B1、B2 和 B3 以与上述 A1、A2 和 A3 相同的方式准备时,它们的总和由 B3 的总和确定。由于 A 的总和等于 B 的总和,因此 A1、A2 和 A3 的总和分别等于 B1、B2 和 B3 的总和。