简要题意:
求一个长度最小的货币系统与给出的货币系统等价。求这个货币系统的长度。等价的定义详见题目,不再赘述。
本文可能用到一些集合论,请放心食用。
算法一
n = 2 n=2 n=2 时,只需判断两个数的倍数关系。有倍数关系则答案为 1 1 1,否则为 2 2 2.
时间复杂度: O ( T × n ) O(T \times n) O(T×n).
实际得分: 15 p t s 15pts 15pts.
算法二
n = 3 n=3 n=3 时,首先,如果两个数都是另一个数的倍数,那么答案为 1 1 1.
否则,如果仍存在倍数关系,则答案为 2 2 2.
其余的情况,只需要考虑,最小的数和次小的数能否表示出最大的数。
能则为 2 2 2,否则为 3 3 3.
这里有很多种方法判断。比如:
-
暴力,用桶直接来, O ( max a i ) O(\max a_i) O(maxai).
-
考虑解方程,用 exgcd \texttt{exgcd} exgcd 写, O ( log max a i ) O(\log \max a_i) O(logmaxai).
总之,时间复杂度为