CF1497B.M-arrays
普及-
通过率:0%
时间限制:1.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You are given an array a1,a2,…,an consisting of n positive integers and a positive integer m.
You should divide elements of this array into some arrays. You can order the elements in the new arrays as you want.
Let's call an array m-divisible if for each two adjacent numbers in the array (two numbers on the positions i and i+1 are called adjacent for each i) their sum is divisible by m. An array of one element is m-divisible.
Find the smallest number of m-divisible arrays that a1,a2,…,an is possible to divide into.
给你一个由 n 个正整数组成的数组 a1,a2,…,an,以及一个正整数 m。
你需要将该数组的元素划分到若干个新数组中。你可以在每个新数组中任意排列其元素。
我们称一个数组是 m-可分的,当且仅当该数组中每一对相邻元素(即对每个 i,位置 i 和 i+1 上的两个数)之和都能被 m 整除。仅含一个元素的数组总是 m-可分的。
求将 a1,a2,…,an 划分为 m-可分数组时,所需的最少数组个数。
输入格式
The first line contains a single integer t (1≤t≤1000) — the number of test cases.
The first line of each test case contains two integers n, m (1≤n≤105,1≤m≤105).
The second line of each test case contains n integers a1,a2,…,an (1≤ai≤109).
It is guaranteed that the sum of n and the sum of m over all test cases do not exceed 105.
第一行包含一个整数 t(1≤t≤1000)—— 表示测试用例的数量。
每个测试用例的第一行包含两个整数 n、m(1≤n≤105,1≤m≤105)。
每个测试用例的第二行包含 n 个整数 a1,a2,…,an(1≤ai≤109)。
保证所有测试用例中 n 的总和与 m 的总和均不超过 105。
输出格式
For each test case print the answer to the problem.
对于每个测试用例,输出该问题的答案。
输入输出样例
输入#1
4 6 4 2 2 8 6 9 4 10 8 1 1 1 5 2 4 4 8 6 7 1 1 666 2 2 2 4
输出#1
3 6 1 1
说明/提示
In the first test case we can divide the elements as follows:
- [4,8]. It is a 4-divisible array because 4+8 is divisible by 4.
- [2,6,2]. It is a 4-divisible array because 2+6 and 6+2 are divisible by 4.
- [9]. It is a 4-divisible array because it consists of one element.
在第一个测试用例中,我们可以将元素按如下方式划分:
- [4,8]。它是一个 4-可整除数组,因为 4+8 能被 4 整除。
- [2,6,2]。它是一个 4-可整除数组,因为 2+6 和 6+2 都能被 4 整除。
- [9]。它是一个 4-可整除数组,因为它仅包含一个元素。
输入解题思路,AI测评打分。不知道怎么写?