Skip to content

Latest commit

 

History

History
120 lines (105 loc) · 2.58 KB

0008.摆平积木.md

File metadata and controls

120 lines (105 loc) · 2.58 KB

8. 摆平积木

题目链接

C++

#include<iostream>
#include<vector>
using namespace std;

int main() {
    int n;
    while (cin >> n) {
        if (n == 0) break;
        vector<int> nums = vector<int>(n, 0);
        int sum = 0;
        for (int i = 0; i < n; i++) {
            cin >> nums[i];
            sum += nums[i];
        }
        int average = sum / n;
        int result = 0;
        for (int i = 0; i < n; i++) {
            if ((nums[i] - average) > 0) result += (nums[i] - average);
        }
        cout << result << endl;
        cout<< endl;
    }
}

Java

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            Integer size = scanner.nextInt();
            if (size == 0) {
                break;
            }
            ArrayList<Integer> list = new ArrayList<>();
            Integer sum = 0;
            for (int i = 0; i < size; i++) {
                int num = scanner.nextInt();
                sum += num;
                list.add(num);
            }
            Integer average = sum / size;
            Integer res = 0;
            //由于题目中说明了保证积木总数能被积木堆数整除,那么肯定能够把多出来的转到少的积木堆上面的
            for (int i = 0; i < list.size(); i++) {
                if (list.get(i) > average) {
                    res += list.get(i) - average;
                }
            }
            System.out.println(res);
            System.out.println();
        }
    }
}

python

while 1:
    try:
        n = int(input())
        if n == 0:
            break
        ls = list(map(int, input().split()))
        ls.sort()
        m = sum(ls) // n
        moves = 0
        for i in ls:
            moves += abs(i - m)
        print(moves//2)
        print()
    except:
        break

Go

Js

C

#include <stdio.h>
#include <stdlib.h>

int main() {
    int n;
    while (scanf("%d", &n) == 1) {
        if (n == 0) break;
        int *nums = (int *)malloc(n * sizeof(int));
        int sum = 0;
        for (int i = 0; i < n; i++) {
            scanf("%d", &nums[i]);
            sum += nums[i];
        }
        int average = sum / n;
        int result = 0;
        for (int i = 0; i < n; i++) {
            if ((nums[i] - average) > 0) result += (nums[i] - average);
        }
        printf("%d\n\n", result);
        free(nums);
    }
    return 0;
}