欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
S42002.20-2 拼接碎片
20-2 拼接碎片
拼接碎片
数列推演完了,但Echo-0留下的不只是数列——还有碎片。无数的碎片,散落在数学空间里。
"碎片?"CC问。
"对。"Echo说,"每块碎片上有一个数。我们要把它们拼起来。"
"拼成啥?"
"一个完整的数。"你说,"给定块碎片,每块上面有一个数。我们要选一些碎片,把它们拼接起来,使得拼接后的数模等于0。"
"拼接?"
"对。"你说,"比如23和45,拼接成2345。"
"咋选?"
"状态压缩。"你说,"每块碎片用一位二进制表示——选或不选。种状态。"
"多大?"
"不超过15。"你说,",可以接受。"
"拼接后的数会很大吧?"
"对。"你说,"所以全程模。拼接时,先乘10的位数幂,再加新数。"
"比如?"
"比如已有数,拼接(有位),新数是。"
"模后?"
"。"你说,"每一步都取模,数字不会溢出。"
"第47块碎片。"你说,"选它。"
"47?"
"对。"你说,"47。"
CC把第47块碎片捡回来——上面写着一个"1"。
"1?"
"对。"她说,"1。"
"1是最小的数。"你说,"但也是最重要的——所有数都从1开始。"
Echo看着碎片一块一块拼起来——像拼图,像记忆,像某种被时间打碎的东西重新聚合。
"以前这些碎片是乱的。"她说,"现在……有顺序了。"
"因为有我们。"你说。
"对。"她说,"因为有你们。"
题目描述
给定个数,每个数有位。选一些数拼接起来,使得结果模为0。求方案数。
输入格式
第一行和。接下来行,每行一个数。
输出格式
方案数模。
输入样例
5
输出样例
0
提示
- 状态压缩DP:表示选了中的数,当前余数为的方案数。
- 转移:枚举下一块碎片,$dp[mask|bit][(r\times 10^{d_i}+a_i)\bmod m]+=dp[mask][r]$。
- ,可接受。
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |