小编cha*_*har的帖子

求大小为 K 的子数组的个数,其总和可被 M 整除?

Alice 有N 个硬币,数量从 0 到(N-1)。鲍勃想从中取出k 个硬币,但爱丽丝只有在这组K 个硬币有趣的情况下才会给予。

如果一组硬币的总和可以被唯一整数M整除,那么它们就很有趣。现在鲍勃想知道他可以通过多少种方式获得K币。

按answer%(10^9+7)打印结果

输入格式:- 三个空格分隔的整数 N,K,M

限制:-

  • 1 <= N,M <= 10 ^ 3
  • 1 <= K <= 10 ^ 2

输入示例:- 4 2 2

示例输出:- 2({1,3},{2,4})

我尝试使用 python 库中的组合来解决问题,但结果超出了内存限制。 后来我用了递归的方法,但也导致超出了时间限制。因为每个私有测试用例需要 10 秒的时间。

任何人都可以帮助解决这种有效的方式吗?

递归方法的代码:

在此输入图像描述

cou=0
n,k,m = input().split()
out_ = solve(k,m,n)
print(out_)


def getCombinations(data,n,k,m):
    val=[0]*k
    combiUtil(data,n,k,0,val,0,m)

def combiUtil(data,n,k,ind,val,i,m):
    global cou
    if(ind==k):
        if(sum(val)%m==0):
            cou+=1
        return
    if(i>=n):
        return
    val[ind]=data[i]
    combiUtil(data,n,k,ind+1,val,i+1,m)
    combiUtil(data,n,k,ind,val,i+1,m) …
Run Code Online (Sandbox Code Playgroud)

python arrays algorithm list data-structures

5
推荐指数
2
解决办法
2511
查看次数

标签 统计

algorithm ×1

arrays ×1

data-structures ×1

list ×1

python ×1