用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