给定 nn 个整数 a_1,a_2,\cdots,a_na 1 ,a 2 ,⋯,a n ,请从中挑出 kk 个数,将它们乘起来,使积在十进制表示下,结尾的零尽量多。
时间: 2023-05-24 12:07:16 浏览: 125
输入n个整数,输出其中最小的k个
令 $f(x)$ 表示 $x$ 的质因数分解中 $5$ 的次数,$g(x)$ 表示 $x$ 的质因数分解中 $2$ 的次数。对于一个数 $a_i$,我们用二元组 $(f(a_i), g(a_i))$ 表示它,然后按照 $f$ 从小到大排序,如果 $f$ 相等则按 $g$ 从小到大排序。排好序后从前往后选出 $k$ 个数相乘即可,因为与其他数相乘时 $5$ 的次数不会增加,只有乘上已选的数才能增加 $5$ 的次数,所以选择 $f$ 从小到大的 $k$ 个数即可保证结尾有 $k$ 个 $0$。对于 $2$ 的次数也有类似的分析,即选 $g$ 从小到大的 $k$ 个数即可保证结尾有 $k$ 个 $2$。
阅读全文