一、题目
题目描述:
微商模式比较典型,下级每赚 100 元就要上交 15 元,给出每个级别的收入,求出金字塔尖上的人收入。
二、输入输出
输入描述;
第一行输入N,表示有N个代理商上下级关系。
接下来输入N行,每行三个数: 代理商代号 上级代理商代号 代理商赚的钱。
输出描述:
输出一行,两个以空格分隔的整数,含义如下 金字塔顶代理商 最终的钱数。
三、示例
示例1:
输入:
3
1 0 223
2 0 323
3 2 1203
输出:
0 105
说明:
2的最终收入等于323 + 1203/100*15=323 + 180
0的最终收入等于 (323 + 180 + 223) / 100* 15 = 105示例2:
输入:
4
1 0 100
2 0 200
3 0 300
4 0 200
输出:
0 120
说明
四、解题思路
先用一个二维数据存储代理、上级代理、收入数据,按照上级代理商代号进行降序排序。然后再遍历这个二维数组,根据遍历得到的上下级信息,可以得到: 上级收入 += 本级收入 /100* 15。
五、参考代码
# -*- coding: utf-8 -*-
'''
@File : 2023-B-微商的收入.py
@Time : 2023/12/30 01:34:36
@Author : mgc
@Version : 1.0
@Desc : None
'''def pyramid_top_income():# 读取代理商的数量n = int(input().strip())# 创建一个字典来存储每个代理商的收入和上级代理商的信息data = []for _ in range(n):# 读取代理商的信息agent, parent, income = map(int, input().strip().split())data.append([agent, parent, income])# 对数据进行排序data.sort(key=lambda x: -x[1])# 获取最上级的代理商 top_agent = data[-1][1]# 计算金字塔尖上的人的最终收入,即他自己的收入加上他的所有下级代理商的收入的15%final_income = {}for agent, parent, income in data:if final_income.get(agent) is not None:income += final_income[agent]if final_income.get(parent) is None:final_income[parent] = 0final_income[parent] += income // 100 * 15return top_agent, final_income[top_agent]# 测试函数
top_agent, income = pyramid_top_income()
print(f"{top_agent} {income}")