CF1883C Raspberries

题目描述

给定一个整数数组 $a_1, a_2, \ldots, a_n$ 和一个整数 $k$($2 \leq k \leq 5$)。每次操作,你可以进行以下操作之一: - 选择一个下标 $1 \leq i \leq n$, - 令 $a_i = a_i + 1$。 请你求出最少需要多少次操作,才能使数组中所有数的乘积 $a_1 \cdot a_2 \cdot \ldots \cdot a_n$ 能被 $k$ 整除。

输入格式

每个测试点包含多个测试用例。第一行包含一个整数 $t$($1 \leq t \leq 10^4$),表示测试用例的数量。接下来是每个测试用例的描述。 每个测试用例的第一行包含两个整数 $n$ 和 $k$($2 \leq n \leq 10^5$,$2 \leq k \leq 5$),表示数组 $a$ 的长度和整数 $k$。 每个测试用例的第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \leq a_i \leq 10$)。 保证所有测试用例中 $n$ 的总和不超过 $2 \times 10^5$。

输出格式

对于每个测试用例,输出使数组中所有数的乘积能被 $k$ 整除所需的最小操作次数。

说明/提示

在第一个测试用例中,我们需要选择下标 $i = 2$ 两次。此后,数组变为 $a = [7, 5]$。此时数组中所有数的乘积为 $35$。 在第四个测试用例中,数组中所有数的乘积为 $120$,已经能被 $5$ 整除,因此不需要任何操作。 在第八个测试用例中,我们可以分别对 $i = 2$ 和 $i = 3$ 各执行一次操作,顺序不限。此后,数组变为 $a = [1, 6, 10]$。此时数组中所有数的乘积为 $60$。 由 ChatGPT 4.1 翻译