用Python从N个自然数中找出总和值可以被k整除的对数的程序
假设我们有一个数n和另一个值k,假设我们有一个包含前N个自然数的数组A,我们必须从A中找到元素A[i]和A[j]对的总数,使得,i<j并且它们的和可以被k整除。
因此,如果输入像n=10k=4,那么输出将是10,因为有10对的总和可以被4整除。[(1,3),(1,7),(2,6),(2,10),(3,5),(3,9),(4,8),(5,7),(6,10),(7,9)]
示例
让我们看看以下实现以获得更好的理解-
def solve(n, k):
m = n //克
r = n % k
b = {}
for i in range(k) :
b[i] = m
for i in range(m*k+1, n+1) :
j = i % k
b[j] = b[j] + 1
c = 0
for i in range(k) :
i1 = i
i2 = (k - i) % k
if i1 == i2 :
c = c + b[i] * (b[i]-1)
else :
c = c + b[i1] * (b[i2])
return c//2
n = 10
k = 4
print(solve(n, k))输入
4, 27输出结果
10