Gravatar
lihaoze
积分:1315
提交:359 / 750

Pro833  丑数

令 $A$ 是所有丑数构成的集合,容易想到,一个丑数是由小于该丑数的一个丑数乘以一个数 $S_i(1 \le i \le K)$ 得来的。

所以,对于一个丑数 $A_i$,枚举 集合 $S$ 和 集合 $A$ (也可以二分,不过速度本来就够快了),找到两个数 $S_i(1 \le i \le K)$ 和 $A_j(1 \le j \le i-1)$,使得 $S_i \cdot A_j > A_{i-1}$,对所有大于 $A_{i-1}$ 的数 $S_i(1 \le i \le K) \cdot A_j(1 \le j \le i-1)$,找到一个最小的数,赋值于 $A_i$。

即 $A_i \gets \min(S_i \cdot A_j)$,其中,$1 \le i \le K,1 \le j \le i-1$

最后,第 $N$ 个丑数就是 $A_N$


2022-03-28 19:24:07    
我有话要说
暂无人分享评论!