#P1021. 九九归一 · 最少调整

九九归一 · 最少调整

九九归一 · 最少调整

题目背景

Bob 在一家数据公司做后端开发。最近公司上线了一个新的推荐算法,算法要求所有特征权重的乘积必须是 9 的倍数,否则系统会判定配置不合法并自动回滚。

运维给 Bob 下发了一批待调整的特征数组,他可以对任意特征值执行 +1 操作(每次操作将该特征值增加 1)。Bob 想用最少的操作次数让数组达标,好早点下班。

题目描述

给定 t 组测试数据。

每组数据给定一个长度为 n 的数组 a₁, a₂, ..., aₙ。

每次操作可以选择任意一个元素,将其值增加 1

求使所有元素的乘积 ∏aᵢ 被 9 整除所需的最少操作次数。

数学背景:乘积被 9 整除 ⇔ 乘积的质因数分解中 3 的指数 ≥ 2。

输入格式

第一行一个整数 t(1 ≤ t ≤ 10⁴),表示测试数据组数。

每组测试数据:

  • 第一行一个整数 n(1 ≤ n ≤ 2×10⁵)。
  • 第二行 n 个整数 a₁, a₂, ..., aₙ(0 ≤ aᵢ ≤ 10⁹)。

保证所有测试数据的 n 之和不超过 2×10⁵。

输出格式

对于每组测试数据,输出一行一个整数,表示最小操作次数。

样例

5
3
2 5 7
2
4 8
1
10
4
6 10 12 13
5
0 1 2 3 4
2
1
8
0
0

样例说明:

  • 第一组:[2,5,7],a₁+1=3,a₂+1=6 → [3,6,7],乘积 126 = 9×14。操作 2 次。
  • 第二组:[4,8],a₂+1=9 → [4,9],乘积 36 = 9×4。操作 1 次。
  • 第三组:[10],加 8 次 → [18],乘积 18 = 9×2。操作 8 次。
  • 第四组:[6,10,12,13],乘积 9360 = 9×1040,已满足。操作 0 次。
  • 第五组:含 0,乘积为 0,0 被任何数整除。操作 0 次。

数据范围

  • 1 ≤ t ≤ 10⁴
  • 1 ≤ n ≤ 2×10⁵,∑n ≤ 2×10⁵
  • 0 ≤ aᵢ ≤ 10⁹