def cal(lis):    from functools import reduce    max_num = max(lis)    length = len(lis)    res = []    dic = {}    ddd = {}    for i in range(length):       dic = find(lis[i],max_num)       res.append(dic)    final_dic = reduce(merge,res)    keys = list(final_dic.keys())    for key in keys:       ddd[key] = 0       for di in res:          ddd[key] += di[key]    res = min(ddd.items(), key=lambda x: x[1])[1]    return res def merge(a,b):    from collections import Counter    return dict.fromkeys(x for x in a if x in b)    #return dict(Counter(x)+Counter(y)) def find(num,max_num):    res = {}    temp = num    count = 0    while num >= 1:       try:          v = res[num]       except:          res[num] = count       num = num // 2       count += 1    count = 0    while temp <= max_num:       try:          v = res[temp]       except:          res[temp] = count       count += 1       temp *= 2    return res if __name__ == '__main__':    n = int(input())    x = input().split(' ')    lis = list(map(int,x))    res = cal(lis)    print(res)
点赞 1

相关推荐

点赞 评论 收藏
分享
牛客网
牛客企业服务