Матч 25, Много чисел (ManyNumbers)

 

Имеется массив чисел numbers и целое k. Положим значение a равным сумме всех чисел из numbers, делящихся на k, а b равным сумме всех чисел из numbers, не делящихся на k. Найти модуль разности a и b.

 

Класс: ManyNumbers

Метод: int getSums(vector<int> numbers, int k)

Ограничения: numbers содержит от 0 до 50 элементов, 0 £ numbers[i] £ 1000, 2 £ k £ 100.

 

Вход. Массив целых чисел numbers и целое число k.

 

Выход. Модуль разности a и b, которые вычисляются по приведенному в условии задачи алгоритму.

 

Пример входа

numbers

k

{2,3,4,5,6}

3

{3,4,5,6,7,8,9,10}

5

{991,45,32,0,1,1,2}

8

 

Пример выхода

2

22

1008

 

 

РЕШЕНИЕ

обработка массива

 

Положим сначала a = b = 0. Проходим по массиву numbers. Если значение numbers[i] делится на k, то добавляем его к a, если нет – то к b. Возвращаем значение |ab|.

 

ПРОГРАММА

 

#include <cstdio>

#include <vector>

#include <cmath>

using namespace std;

 

class ManyNumbers

{

  public:

  int getSums(vector <int> numbers, int k)

  {

    int i,a,b;

    for(a=b=i=0;i<numbers.size();i++)

      if (numbers[i] % k) b += numbers[i]; else a += numbers[i];

    return abs(a-b);

  }

};