【发布时间】:2016-05-25 16:50:49
【问题描述】:
我得到了一个包含 n 个整数的集合 S,并且必须打印 S' 的最大子集 S' 的大小,其中 S' 中任意 2 个数字的总和不能被 k 整除。
输入格式
第一行包含 2 个以空格分隔的整数,分别为 n 和 k。 第二行包含 n 个以空格分隔的整数,描述集合的唯一值。
我的代码:
import sys
n,k = raw_input().strip().split(' ')
n,k = [int(n),int(k)]
a = map(int,raw_input().strip().split(' '))
count = 0
for i in range(len(a)):
for j in range(len(a)):
if (a[i]+a[j])%k != 0:
count = count+1
print count
输入:
4 3
1 7 2 4
预期输出:
3
我的输出:
10
我做错了什么?有人吗?
【问题讨论】:
-
您的代码做了一些与问题完全无关的事情。这不是你做错的一些小细节的问题。
-
@C14L:如果不选择两个加起来是 k 倍数的元素,你能选择 S 的多少个元素?
-
@user2357112 那么
len([x for x in itertools.combinations(a, 2) if operator.add(*x) % k])呢? -
@C14L:你还是在解决错误的问题。
-
@user2357112 我得到了正确的解决方案。并且没有剩余的项目
[(1, 7), (1, 4), (7, 4)]可以被k整除。
标签: python