Algorithm 可被M整除的P元素(允许重复)的子集和

Algorithm 可被M整除的P元素(允许重复)的子集和,algorithm,time-complexity,dynamic-programming,subset-sum,Algorithm,Time Complexity,Dynamic Programming,Subset Sum,给定一个由N个元素组成的数组A。我们需要找到子集的数目(允许重复数),使得子集中元素的数目为P,并且这些P元素的总和可被M整除 N最多可为10^5 p最多可为10^5 M最多可为10 数组中的元素最多可为10^9 我的想法:我想到了使用动态规划生成子集和,从sum=M开始,直到sum=p*max(A),然后找到所有可被M整除的子集和,但这肯定是不够的。你知道我该怎么解决这个问题吗 子集和(允许重复)算法如下所示: 即使是关于该方法的小提示也会受到欢迎。提示:通常在此类问题中,检查约束是一种很好的

给定一个由N个元素组成的数组A。我们需要找到子集的数目(允许重复数),使得子集中元素的数目为P,并且这些P元素的总和可被M整除

N最多可为10^5

p最多可为10^5

M最多可为10

数组中的元素最多可为10^9

我的想法:我想到了使用动态规划生成子集和,从sum=M开始,直到sum=p*max(A),然后找到所有可被M整除的子集和,但这肯定是不够的。你知道我该怎么解决这个问题吗

子集和(允许重复)算法如下所示:


即使是关于该方法的小提示也会受到欢迎。

提示:通常在此类问题中,检查约束是一种很好的方法。引起注意的是变量M的约束(最多10个)。这意味着您可以使用模运算,找到大小为P、余数为0的M的子集和的数目。

您的帖子中似乎没有问题。你有一个问题,看起来像是“家庭作业”,你希望有人为你写代码?如果是这样,StackOverflow就不是为了这个。检查问题指南:@Joãosaares我不想要任何代码。只要一个方法或提示就可以有效地解决问题。我理解,但这不是StackOverflow的目的。检查我上面发给你的链接。