当前位置:   article > 正文

leetcode刷题:区间删除_小美的区间删除

小美的区间删除

小美拿到了一个大小为n的数组,她希望删除一个区间后,使得剩余所有元素的乘积末尾至少有k个 0。小美想知道,一共有多少种不同的删除方案?

输入描述

第一行输入两个正整数n,k。第二行输入n个正整数ai,代表小美拿到的数组。

  1. 1<=n,k<=10^5
  2. 1<=ai<=10^9

输出描述

一个整数,代表删除的方案数。

  1. import bisect
  2. from itertools import accumulate
  3. n,k = map(int, input().split())
  4. A = [int(c) for c in input().split()]
  5. """
  6. 乘积末尾0的数量取决于2和5的因子的数量
  7. 假设原来的末尾0的数量是x 删除区间以后至少有k个,也就是删除的区间至多包含x-k个 min(2因子,5因子)
  8. 这个问题本质是求 有多少个区间满足 至多包含x-k个 min(2因子,5因子)
  9. 需要二分查找
  10. """
  11. def getFactor2(a):
  12. f2 = 0
  13. while a != 0 and a % 2 == 0:
  14. f2 += 1
  15. a //= 2
  16. return f2
  17. def getFactor5(a):
  18. f5 = 0
  19. while a != 0 and a % 5 == 0:
  20. f5 += 1
  21. a //= 5
  22. return f5
  23. f2s,f5s = [getFactor2(a) for a i
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/802313
推荐阅读
相关标签
  

闽ICP备14008679号