Учитывая массив = [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;
Здесь я пересекаю массив слева направо при обновлении ответа,Это правильно?