Максимизировать сумму массива по модулю M при заданном условии - PullRequest
0 голосов
/ 12 апреля 2019

Учитывая массив = [a, b, c, ...].

Вам нужно найти максимальное значение для [a * k1 + b * k2 + c *k3 + ...]% M .Где k1, k2, k3 .. - любые целые неотрицательные целые числа , которые вы можете выбрать.М. известен.

Язык - C ++

Пример


Вход

arr=[7, 3, 2].

M=10

Выход

9

Объяснение

You can choose to make the array [7 * 1 + 3 * 0 + 2 * 1 ] % 10.
Here k1 = 1, k2 = 0, k3 = 1 .
So you get 9 as the answer(max value).

Edit-

Я пытаюсь найти решение C ++ .

Моя попытка:

Я знаю, что ответ будет варьироваться от 0 до M-1.Но я не понимаю, как поступить.

Редактировать

Моя попытка

int ans=arr[0];

for(int i=1; i<arr.length(); i++){

ans=max((ans+arr[i])%M,ans);

}

return ans;

Здесь я пересекаю массив слева направо при обновлении ответа,Это правильно?

...