题目描述:
微商模式比较典型,下级每赚 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] = 0
final_income[parent] += income // 100 * 15
return top_agent, final_income[top_agent]
# 测试函数
top_agent, income = pyramid_top_income()
print(f"{top_agent} {income}")