Задан массив целых чисел A
= (a0, a1, ..., an-1)
и натуральное число k. Определите количество таких пар (i, j), что i
< j и сумма ai + aj
делится на k.
Вход. Первая
строка содержит целые числа n (2 ≤ n, k ≤ 100)
и k. Вторая строка содержит n целых чисел – элементы массива
A = (a0, a1, ..., an-1),
где 1 ≤ ai ≤ 100.
Выход. Выведите
количество пар (i, j), для которых i < j и ai
+ aj делится на k.
|
Пример входа |
Пример выхода |
|
6 3 1 3 2 6 1 2 |
5 |
массивы
Заносим входную последовательность чисел в массив.
Пусть res = 0. Далее перебираем все пары (i, j) где
i < j. Если ai + aj делится
на k, увеличиваем res на 1.
Реализация алгоритма
Объявим рабочий массив m.
#define MAX 101
int m[MAX];
Читаем входные данные.
scanf("%d %d", &n, &k);
for (i = 0; i < n; i++)
scanf("%d", &m[i]);
В переменной res подсчитываем количество искомых пар.
res = 0;
Перебираем все пары (i, j) где i <
j. Если ai + aj делится на k,
увеличиваем значение res на 1.
for (i = 0; i < n; i++)
for (j = i + 1; j < n; j++)
if ((m[i] + m[j])
% k == 0) res++;
Выводим ответ.
printf("%d\n", res);