题目链接:https://www.dotcpp.com/oj/problem2060.html

题目解析:对给定数据按升序排序,假设数组 arr[] 长度为n,取数组前 n / 2 + 1 个元素,然后对每一个元素取 arr[i] /2 +1,累加即可得到答案。

:在这里不需要考虑 n 为偶数或奇数,因为如果 n = 4,那么 n / 2 为 2,题目要求是大于一半,所以要取 n / 2 + 1。当 n = 5时,由于默认是向下取整,所以必然是 n / 2 +1。

代码

  1. import java.util.*;
  2. public class Main{
  3. public static void main(String[] args) {
  4. Scanner sc = new Scanner(System.in);
  5. while (sc.hasNext()) {
  6. int n = sc.nextInt();
  7. if(n == 0){
  8. return;
  9. }
  10. int[] people = new int[n];
  11. for(int i = 0; i < n; i++){
  12. people[i] = sc.nextInt();
  13. }
  14. Arrays.sort(people);
  15. int ans = 0;
  16. for(int i = 0; i <= n/2; i++){
  17. ans += people[i] / 2 + 1;
  18. }
  19. System.out.println(ans);
  20. }
  21. }
  22. }