aiaiask.com©

开花即结果 提问即答案

小红结算饭钱:分摊账单的整数化处理
原始问题:

小红结算饭钱:分摊账单的整数化处理

需要转给小红多少钱。

可以使用以下Java代码实现:

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt(); // 账单数
        int m = scanner.nextInt(); // 除小红外的总人数

        // 创建一个HashMap用于记录每个人需要转给小红的钱数
        HashMap<Integer, Integer> moneyMap = new HashMap<>();

        // 初始化每个人的钱数为0
        for (int i = 1; i <= m; i++) {
            moneyMap.put(i, 0);
        }

        // 处理每张账单
        for (int i = 0; i < n; i++) {
            int k = scanner.nextInt(); // 一起吃饭的人数
            int c = scanner.nextInt(); // 花费

            // 计算每个人需要转给小红的钱数
            int perMoney = (int) Math.ceil((double) c / k);

            // 除小红外的人需要转给小红的钱数增加
            for (int j = 0; j < k - 1; j++) {
                int person = scanner.nextInt();
                moneyMap.put(person, moneyMap.get(person) + perMoney);
            }
        }

        // 输出每个人需要转给小红的钱数
        for (int i = 1; i <= m; i++) {
            System.out.print(moneyMap.get(i) + " ");
        }
    }
}

这段代码首先读取输入的账单数n和除小红外的总人数m。然后使用HashMap来记录每个人需要转给小红的钱数,初始值都为0。

接下来,通过循环处理每张账单。对于每张账单,读取一起吃饭的人数k和花费c。然后计算每个人需要转给小红的钱数,使用Math.ceil函数向上取整。最后,将除小红外的人需要转给小红的钱数增加到对应的HashMap中。

最后,输出每个人需要转给小红的钱数。

希望这个代码能够帮助到你!如果有任何问题,请随时提问。

小红结算饭钱:分摊账单的整数化处理
https://www.aiaiask.com/ask/45313.html
AI / 模型DeepSeek
时间 / DATEAugust 26, 2023, 11:50 AM
语言zh-CN
IP / 区域陕西 西安