本文主要是介绍【练习6】除2!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
链接:https://ac.nowcoder.com/acm/contest/8563/A
分析:
输入5个数,选择三个最大的偶数除2,求这些数的和。
想获得最大的偶数,可以创建一个大根堆,将偶数放进去,从最大的开始除2,除完再放回去。
public static void main(String[] args){Scanner in = new Scanner(System.in);//输入n个数,进行k次操作int n = in.nextInt(), k = in.nextInt();//通过比较器来创建一个大根堆PriorityQueue<Integer> heap = new PriorityQueue<>((a,b)->{return b - a;});//sum来统计和,x是每次读的数long sum = 0,x;for(int i = 0; i < n; i++){x = in.nextLong();sum += x;//如果是偶数就放到堆里if(x % 2 == 0){heap.add((int)x);}}while(!heap.isEmpty() && k-- != 0){long t = heap.poll() / 2;sum -= t;if(t % 2 == 0){heap.add((int)t);}}System.out.println(sum);}
这篇关于【练习6】除2!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!