1.小欧的平均数
题目描述
小欧有三个数x,y,z,小欧想要令三个数平衡,那么小欧需要先选定其中任意两个数,并获得他们的平均数K,若这两个数的平均数不是整数,则K不是整数,即小欧必须更换他的选择,否则三数无法平衡,可选的操作是加1或者减1,输出最少的操作数。
思路:要保证任意两个数的平均数是整数,就要保证三个数的奇偶性相同,所以转化奇偶性即可
python 实现
x,y,z=map(int,input().strip().split())
o_count=0
if(x%2==0):
o_count+=1
if(y%2==0):
o_count+=1
if(z%2==0):
o_count+=1
print(min(o_count,3-o_count))
1.2 组装手机
题目描述
小欧已经生产了n个手机外壳,第i个手机外壳售价ai元,小蕊生产了n个手机零件,第i个手机零件售价bi元。在组装手机中,一个手机外壳与一个手机零件可以组装成一个手机,手机的售价为手机外壳售价与手机零件售价之和。他们需要选出一些外壳和零件,配对形成若干部手机,要求这些手机的售价全部相同。小欧想知道他们最多可以组装多少部手机?
想法:思路:先排序,求两个数组中两两元素的和,然后使用Counter判断和出现次数 count.most_common(1),返回出现次数最大的一个数。
隐含问题:如果a或者b中有两个一样的价格,则重复使用了
python 实现
from collections import Counter
n=int(input().strip())
a=list(map(int,input().strip().split()))
b=list(map(int,input().strip().split()))
sums=[]
for i in range(n):
for j in range(n):
sums.append(a[i]+b[j])
count=Counter(sums)
res = count.most_common(1)
# 如果a或者b中有两个一样的价格,则重复使用了,减掉
a1=set(a)
b1=set(b)
num = len(a)+len(b)-len(a1)-len(b1)
print(res[0][1]-num)