题目描述
输入int型数组,询问该数组能否分成两组,使得两组中各元素加起来的和相等,并且,所有5的倍数必须在其中一个组中,所有3的倍数在另一个组中(不包括5的倍数),能满足以上条件,输出true;不满足时输出false。
本题含有多组样例输入。
输入描述:
第一行是数据个数,第二行是输入的数据
输出描述:
返回true或者false
示例1
输入
4 1 5 -5 1 3 3 5 8
输出
true
说明
第一个样例: 第一组:5 -5 1 第二组:1 第二个样例:由于3和5不能放在同一组,所以不存在一种分法。
代码实现如下:
def func(): while True: try: n = int(input()) a = list(map(int,input().split())) s5,s3,s0= [],[],[] for i in a: if i%5 ==0: s5.append(i) elif i%3 ==0: s3.append(i) else: s0.append(abs(i)) s0.sort(reverse=True) sum5 = sum(s5) sum3 = sum(s3) #print(s3) for i in s0: if sum5 < sum3: sum5 +=i else: sum3 +=i if sum5 == sum3: print('true') else: print('false') except Exception as e: #print(e) break if __name__ == '__main__': func()