题意 给定\(n\)个砝码和\(m(1 \le n, m \le 100000)\)个背包\((1 \le n_i, m_i \le 1000000000)\),保证对于任意两个砝码都有一个是另一个的正整数倍,求最多拿走多少砝码. 分析 砝码的种类不会超过\(30\)种. 小的肯定在大的前面放. 题解 分出\(s\)种种类后,我们将背包用\(s\)个数的进制来表示.那么从小到大地放,如果当前进制的系数不够了,则向前面借位,依次类推. #include <bits/stdc++.h> using…