码迷,mamicode.com
首页 > 其他好文 > 详细

codeforces 703E Mishka and Divisors

时间:2018-01-16 00:47:29      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:一个   markdown   line   for   数量级   预处理   数组   log   pos   

codeforces 703E Mishka and Divisors

题面

给出大小为\(1000\)的数组和一个数\(k\),求长度最短的一个子序列使得子序列的元素之积是\(k\)的倍数,如果有多个解输出元素和最小的序列。
\(k\)和数组元素的数量级都是\(1e12\)

题解

\(f[i][d]\)表示前\(i\)项是\(d\)的倍数的最优解。因为\(d\)只可能是\(k\)的因数,所以离散化一下\(k\)的因数即可。
过程中需要多次求\(gcd\),直接求会超时。需要先预处理\(b[i]=gcd(a[i], k)\),那么\(gcd(a[i], k/d) -> gcd(b[i], k/d)\)

codeforces 703E Mishka and Divisors

标签:一个   markdown   line   for   数量级   预处理   数组   log   pos   

原文地址:https://www.cnblogs.com/wuyuanyuan/p/8290049.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!