Задан массив целых чисел 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.
Реализация алгоритма
Объявим рабочий массив.
#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);