编程题
### 问题描述 给定两个整数 $N$ 和 $M$。你有一个包含从 $1$ 到 $N$ 的所有整数的集合 $S$。 你还有一个大小为 $M$ 的集合 $Q$,它是集合 $S$ 的一个子集。你需要通过以下操作将集合 $S$ 转化为集合 $Q$: - 选择一个整数 $k$,满足 $1 \leq k \leq N$,并且存在一个整数 $k$ 的倍数在集合 $S$ 中,然后从集合 $S$ 中移除最小的一个整数 $k$ 的倍数。 - 这个操作会产生一个代价 $k$。 你需要找出将集合 $S$ 转化为集合 $Q$ 所需的最大代价。 ### 输入格式 第一行输入一个整数 $T$,表示测试用例的数量。 每个测试用例包含两行: - 第一行输入两个整数 $N$ 和 $M$,分别表示集合 $S$ 和集合 $Q$ 的元素数量。 - 第二行输入 $M$ 个整数,表示集合 $Q$ 的元素。 ### 输出格式 对于每个测试用例,输出一行,表示将集合 $S$ 转化为集合 $Q$ 所需的最大代价。 ### 样例输入 ```markdown 3 5 3 1 3 5 4 2 1 3 3 1 2 ``` ### 样例输出 ```markdown 6 6 4 ``` ### 说明 - 样例中的第一个测试用例:初始时,集合 $S = \textbraceleft1, 2, 3, 4, 5\textbraceright$,我们希望将其转化为集合 $\textbraceleft1, 3, 5\textbraceright$。一种可能的做法是: - 选择 $k = 4$,从集合 $S$ 中移除元素 $4$,代价为 $4$。 - 选择 $k = 2$,从集合 $S$ 中移除元素 $2$,代价为 $2$。 这样,总代价为 $6$。可以证明,不能得到更大的总代价。 - 样例中的第二个测试用例:初始时,集合 $S = \textbraceleft1, 2, 3, 4\textbraceright$,我们希望将其转化为集合 $\textbraceleft1, 3\textbraceright$。就像上面一样,我们可以移除元素 $2$ 和 $4$,得到总代价 $6$。 ### 评测数据范围 $1 \leq T \leq 10^4$。 $1 \leq N \leq 10^9$。 $1 \leq M \leq N$。 所有测试用例中 $M$ 的和不超过 $3 \times 10^5$。
查看答案
赣ICP备20007335号-2