[语言月赛202302] 神树大人挥动魔杖 题解

· · 题解

Source & Knowledge

2023 年 2 月语言月赛,由洛谷网校入门计划/基础计划提供。

简要题意

9\times10^{n-1} 个精灵均分为 k 个队列。编号从 10^{n-1}10^{n}-1(也就是所有的 n 位数),假设一个精灵编号为 a,则放入队列 a \bmod k -1 中。问每个队列有多少精灵。

解析

因为 n 比较小,可以通过枚举所有的 n 位数,再建立一个数组进行计数。

在这个范围内枚举,然后将其对 $k$ 取余数,将结果放入对应的桶中。最后输出各个桶中的元素数量。 有一点提示,实际上对 $k$ 取余数得到的数是 $0$ 到 $k-1$。你可以把这个数字加上 1 然后存入对应的桶中(对应第几个队列,从 1 开始计数),你也可以直接把这个数字直接存入对应的桶中(从 0 开始计数)。 这种做法的时间复杂度是 $O(10^n)$ 的,效率略低。有复杂度更优的方案,学有余力的同学欢迎尝试改进优化。 ## 视频题解 **完整代码请在视频中查看。** ![](bilibili:BV1L24y1q7Tv?p=3)