题目描述
输入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()