当前位置: 首页 > article >正文

CF55D-Beautiful numbers (数位dp)

在这里插入图片描述
l c m ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ) = 2520 lcm(1,2,3,4,5,6,7,8,9)=2520 lcm(1,2,3,4,5,6,7,8,9)=2520

  • x x x 能被它自己的所有非零位的数字整除,即能被它们的最小公倍数整除, x ≡ 0 ( m o d   l c m ( { d i g i t [ i ] } ) ) x \equiv 0(mod\ lcm(\{digit[i]\})) x0(mod lcm({digit[i]}));
  • 2520 ≡ 0 ( m o d   l c m ( { d i g i t [ i ] } ) ) 2520 \equiv 0(mod\ lcm(\{digit[i]\})) 25200(mod lcm({digit[i]}))
  • x ≡ 0 ( m o d   l c m ( { d i g i t [ i ] } ) ) x \equiv 0(mod\ lcm(\{digit[i]\})) x0(mod lcm({digit[i]})),则 ( x   m o d   2520 ) ≡ 0 ( m o d   l c m ( { d i g i t [ i ] } ) ) (x\ mod\ 2520) \equiv 0(mod\ lcm(\{digit[i]\})) (x mod 2520)0(mod lcm({digit[i]}))

由以上可得,判断 x x x 只需判断 x   m o d   2520 x\ mod\ 2520 x mod 2520

  • dp[i][j][k] 表示前 i i i 位,表示的数模 2520 2520 2520 的余数为 j j j,前 i i i 位的最小公倍数为 k k k,这样空间为 d p [ 20 ] [ 2525 ] [ 2525 ] dp[20][2525][2525] dp[20][2525][2525],明显 M L E MLE MLE
  • 考虑到 2520 2520 2520 的约数共 48 48 48 个,不是约数的最小公倍数都没有用,所以,可以将换为 k k k i i i 位最小公倍数的元素个数,最后一维通过离散化降到 50 50 50,从而空间为 d p [ 20 ] [ 2525 ] [ 50 ] dp[20][2525][50] dp[20][2525][50]

http://www.kler.cn/news/10659.html

相关文章:

  • 自动化测试学习(七)-正则表达式,你真的会用吗?
  • Python循环实例
  • 爬虫日常练习-selenium登录12306
  • 2022年陕西省职业院校技能大赛“网络搭建与应用”赛项竞赛试题
  • Github创建组织(organization)
  • CTF-PHP反序列化漏洞1-基础知识
  • extern 关键字
  • 「Vue面试题」Vue项目中有封装过axios吗?主要是封装哪方面的?
  • 【分布式技术专题】「单点登录技术架构」一文带领你好好对接对应的Okta单点登录实现接口服务的实现落地
  • DHTMLX Gantt入门使用教程【引入】:如何开始使用 dhtmlxGantt
  • 51单片机和32单片机有什么区别?该从哪个开始入门学习?
  • 2023-03-18青少年软件编程(C语言)等级考试试卷(二级)解析
  • DStream是什么?怎样对DStream进行操作?
  • JS 正则匹配(RegExp)
  • UniverSeg:通用医学图像分割模型来了!
  • Python3 os.symlink() 方法、Python 质数判断
  • 常见面试题之MQ篇
  • 【 SpringBoot 配置⽂件 】
  • 在window上安装python
  • 迈入Java,一文告诉你学习Java的原因