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)