摘要: 数字后面的0可以被10整除,或者等于2和5整除。此外,在一个阶乘中总是质因子2的个数多于5的个数。 为了得到阶乘的最后一位数,我们可以运行一个循环来计算阶乘模10的结果,但要出去质因子2或5。 最后,排除相同数量的2和5,从而忽略10,并乘以多余数目的质因子2。 int n; int main() 阅读全文
posted @ 2021-06-16 13:17 Dazzling! 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 解法一:小根堆 要得到从小到大的第 \(n\) 个丑数,可以使用最小堆实现。 初始时堆为空。首先将最小的丑数 \(1\) 加入堆。 每次取出堆顶元素 \(x\),则 \(x\) 是堆中最小的丑数,由于 \(2x, 3x, 5x\) 也是丑数,因此将 \(2x, 3x, 5x\) 加入堆。 上述做法会 阅读全文
posted @ 2021-06-16 12:40 Dazzling! 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 状态表示: \(f(i,j)\):从前$i$张邮票中选,总面值恰好为$j$所需的最少邮票数。 状态转移: 按照完全背包的转移方式。 \[ f(i,j)=\min(f(i-1,j),f(i,j-v_i)+1) \] 边界: \[ f(0,0)=0 \] const int N = 2e6+10; in 阅读全文
posted @ 2021-06-16 09:38 Dazzling! 阅读(27) 评论(0) 推荐(0) 编辑