在给定条件下最大化数组求和模M

时间:2019-04-12 16:10:28

标签: sum max modular-arithmetic

  

给出一个数组= [a,b,c,...]。

     

您必须找到[a * k1 + b * k2 + c * k3 +   ...]%M 。其中 k1,k2,k3 ..是任何需要的非负整数   可以选择。 M是已知的。

语言-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).

编辑-

我正在尝试使用 C ++ 解决方案。

我的尝试

我知道ans的范围是0到M-1。但是我不知道如何进行。

修改

我的尝试

int ans=arr[0];

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

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

}

return ans;

在这里,我从左到右遍历数组,以更新ans。它是否正确?

0 个答案:

没有答案