#3935. 小杨的储蓄(23-9C++三级)

小杨的储蓄(23-9C++三级)

问题描述

⼩杨共有 个储蓄罐,编号从 到 。从第 1 天开始,⼩杨每天都会往存钱罐⾥存钱。具体来说,第 天他会 挑选⼀个存钱罐 ,并存⼊ 元钱。过了 天后,他已经忘记每个储蓄罐⾥都存了多少钱了,你能帮帮他吗?

输入描述

输⼊ 2 ⾏,第⼀⾏两个整数 ;第⼆⾏ 个整数,其中第 个整数为 (保证 )。 每⾏的各个整数之间⽤单个空格分隔。 保证 ;

输出描述

输出 个⽤单个空格隔开的整数,其中第 个整数表⽰编号为 的存钱罐中有多少钱()。 3.1.4特别提醒 在常规程序中,输⼊、输出时提供提⽰是好习惯。但在本场考试中,由于系统限定,请不要在输⼊、输出中附带任 何提⽰信息。

样例输入

2 3

样例输出

4 2

样例解释

⼩杨在第 1 天、第 2天、第 3 天分别向0 号、1 号、 0号存钱罐存了 1元钱、2 元钱、 3元钱,因此 0号存钱罐有 1+3=4元钱,⽽ 1号存钱罐有 2元钱。

样例输入

3 5 0 0 0 2 0

样例输出

11 0 4

【题目大意】

小杨有N个存钱罐,存了D天(第一行输入数据),每天会选择其中一个存钱罐(第二行输入的数据就是D个数据,第i个数据就是第i天选择的是第几个存钱罐)存入第i天的i元钱。问最终N个存钱罐,每个存钱罐里面有多少元(输出的N个数据)。

【解题思路】

本题主要考察内置函数和列表推导式的知识。

  1. 输入两个数据n,d,单个空格分隔,使用split()函数,使用map()函数将其转换为整数。
  2. 输入D个数据,通过map()函数将每个数据转换为int类型,并使用list()函数转为列表,赋值给x。
  3. 使用一个列表推导式,创建一个包含n个元素的列表arr,存储存钱罐对应的总钱数。其中每个元素都初始化为0。

4.遍历d,将对应的i作为x列表的索引值,找到对应的天数对应的罐子编号,将编号传入arr列表,作为索引值。将i+1存入对应的位置(因为range()函数是从0开始遍历,所以是i+1)。

5.将arr列表中的每个元素通过map()函数转为str类型,使用join()函数转为以空格连接的字符串。

Limitation

1s, 1024KiB for each test case.