题源:洛谷
目录
题目
代码实现
单层循环实现:
循环遍历天数D,作为待加和的值,将列表中的值视作下标存储对应的天数
# 读取输入数据
# 第一行输入两个整数:N(储蓄罐数量)和D(存钱天数)
N, D = map(int, input().split())
# 第二行输入D个整数,表示每天选择的储蓄罐编号(0到N-1)
a = list(map(int, input().split()))
# 初始化储蓄罐数组
# 创建一个长度为N的列表,初始值都为0,用于记录每个储蓄罐的总金额
savings = [0] * N
# 模拟存钱过程
# 遍历每一天(从1到D天)
for day in range(1, D + 1):
# 获取当天选择的储蓄罐编号
# 注意:day-1是因为列表索引从0开始,而天数从1开始
jar = a[day - 1]
# 将当天的金额(day元)存入对应的储蓄罐
# 例如:第1天存1元,第2天存2元,...
savings[jar] += day
# 输出结果
# 将savings列表中的数字转换为字符串,并用空格连接成一个字符串输出
print(' '.join(map(str, savings)))
双层循环实现:
已知存钱罐个数为N,遍历存钱罐[0,N-1],内层循环遍历输入的列表,内层判断如果是当前存钱罐(存钱罐的编号和输入的列表中数字一样),存入对应的钱(也就是天数D)
# 读取输入
N, D = map(int, input().split()) # N个储蓄罐,D天
a = list(map(int, input().split())) # 每天选择的储蓄罐编号
# 初始化储蓄罐金额
savings = [0] * N
# 外层循环:遍历每个储蓄罐
for jar in range(N):
# 内层循环:遍历每一天
for day in range(1, D + 1):
# 如果当天选择的是当前储蓄罐
if a[day - 1] == jar:
# 存入当天的金额
savings[jar] += day
# 输出结果
print(' '.join(map(str, savings)))