题目:
http://www.lydsy.com/JudgeOnline/problem.php?id=1974 http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1261

题意:
一个10进制表示的正整数,如果从左到右,每一位的数字都不小于前一位的数字,则被称为上升数。
给出正整数NN和KK,求有多少个长度恰好为NN的上升数是KK的倍数,答案对999911659999911659取模。
N≤1018,K≤500N\leq 10^{18},K\leq 500。

题解:
上升数可以拆成不超过9个类似10k−19\frac{10^k-1}{9}的数字的和,这些数字(1,11,111,1111,⋯)(1,11,111,1111,\cdots)在模KK意义下的值有O(K)O(K)种取值,可以将这些数分成O(K)O(K)组,进行分组背包计数。
令f[i][j][k]f[i][j][k]表示前ii组里选jj个数的和在模KK意义下是kk的方案数,由于同一组里选mm个数组成可重集的方案数是(X−1+mm)\binom{X-1+m}{m},其中XX表示组里不同数字的个数,所以转移是枚举当前组里选多少个数进行转移。
注意10N−19\frac{10^N-1}{9}至少要选1个,所以将它从上面的计数里排除,最后枚举它的数量,再配合之前计数的结果进行计数即可。
时间复杂度O(102K2)O(10^2K^2),数组滚动后空间复杂度O(10K)O(10K)。
注意K=1K=1的情况。

代码:

#include <cstdio>
typedef long long LL;
const int maxm = 510, maxd = 10, mod = 999911659;
LL n;
int m, a[maxm], pos[maxm], s[maxm], val, inv[maxd], f[maxd][maxm], ans;
int main()
{scanf("%lld%d", &n, &m);a[1] = 1 % m;pos[a[1]] = 1;for(int i = 2; i <= m + 1; ++i){a[i] = (a[i - 1] * 10 + 1) % m;if(pos[a[i]]){int beg = pos[a[i]], end = i, len = end - beg;for(int j = 1; j < beg && j <= n; ++j)++s[a[j]];for(int j = 0; j < len && beg + j <= n; ++j)s[a[beg + j]] = (s[a[beg + j]] + (n - beg - j) / len + 1) % mod;val = n < beg ? a[n] : a[beg + (n - beg) % len];--s[val];if(s[val] < 0)s[val] += mod;break;}pos[a[i]] = i;}inv[1] = 1;for(int i = 2; i < maxd; ++i)inv[i] = mod - mod / i * (LL)inv[mod % i] % mod;f[0][0] = 1;for(int i = 0; i < m; ++i){if(!s[i])continue;for(int j = maxd - 1; j > 0; --j){int coeff = 1;for(int k = 1; k <= j && coeff; ++k){coeff = (LL)coeff * (s[i] - 1 + k) % mod * inv[k] % mod;for(int o = 0; o < m; ++o)f[j][(o + k * i) % m] = (f[j][(o + k * i) % m] + (LL)coeff * f[j - k][o]) % mod;}}}for(int i = 1; i < maxd; ++i){int res = val * i % m;if(res)res = m - res;for(int j = 0; i + j < maxd; ++j){ans += f[j][res];if(ans >= mod)ans -= mod;}}printf("%d\n", ans);return 0;
}

BZOJ 1974 [Sdoi2010]auction 代码拍卖会 | 51nod 1261 上升数相关推荐

  1. [BZOJ1974][Sdoi2010]auction 代码拍卖会(dp+组合数学)

    Address https://www.lydsy.com/JudgeOnline/problem.php?id=1974 Solution 看上去是一个显然的数位 dp ,但是看到 N≤1018N≤ ...

  2. bzoj 1974: [Sdoi2010]代码拍卖会

    Description 随着iPig在P++语言上的造诣日益提升,他形成了自己一套完整的代 码库.猪王国想参加POI的童鞋们都争先恐后问iPig索要代码库.iPi g不想把代码库给所有想要的小猪,只想 ...

  3. SDOI2010 代码拍卖会

    SDOI2010 代码拍卖会 题意: 题目传送门 题解: 看完题目之后,第一反应应该就是数位\(Dp\)了,但是考虑到\(N\)非常的大,我们需要考虑另一种方法.注意到这个满足条件的数字的每一位都大于 ...

  4. python代码根据时间获取周数(week of the year)

    python代码根据时间获取周数(week of the year) # 使用python获取当前是当年的第多少周 import time import datetime # 获取今天是第几周 pri ...

  5. c语言一行代码太长,C语言修改一行代码,运行效率居然提升数倍,这个技巧你知道吗...

    对编译.链接.OS内核.系统调优等技术感兴趣的童鞋,不妨右上角关注一下吧,近期会持续更新相关方面的专题文章!引言 近日,网上看到一篇文章,分析数组访问的性能问题.文章经过一系列"有理有据&q ...

  6. [BZOJ1974][SDOI2010]代码拍卖会[插板法]

    题意 询问有多少个数位为 \(n\) 的形如 \(11223333444589\) 的数位值不下降的数字在\(\mod p\) 的意义下同余 \(0\). $n\leq 10^{18} ,p\leq ...

  7. bzoj1974 [Sdoi2010]代码拍卖会 循环+背包

    一般这种计数题就两个套路:找到倍数然后删除不合法的   找到合法的然后删除不是倍数的 如果先找倍数,那不合法的数位置和倍数没有直接关系 这个题是要先找合法的 然后删除不是倍数的 首先这个合法的数找的方 ...

  8. BZOJ 1923: [Sdoi2010]外星千足虫

    1923: [Sdoi2010]外星千足虫 Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 921  Solved: 592 [Submit][Stat ...

  9. [Luogu P2447] [BZOJ 1923] [SDOI2010]外星千足虫

    洛谷传送门 BZOJ传送门 航空航天局(NASA)研制发射,行经火星.金星.土卫六.木卫二.谷神星."张衡星"等232323颗太阳系星球,并最终在小行星"杰森星" ...

最新文章

  1. 解决Pycharm中SystemError报错
  2. ppt批量缩略图_拒绝加班系列:100个PPT常用快捷键,让PPT制作快到起飞
  3. 【学习笔记】线性代数全家桶(在编程竞赛中的应用)
  4. 去掉WIN7系统用户登陆界面(默认用户自动登录)
  5. HTML 5新增的元素
  6. MySQL必知必会(使用子查询)
  7. 《Spring Cloud 与 Docker 微服务架构实战》笔记
  8. iPhone 11终于没涨价但依然暴利 外媒:64GB起始容量就是个笑话
  9. matlab 绘花,【原创】使用matlab绘制菊花和玫瑰花
  10. Linux驱动总结3- unlocked_ioctl和堵塞(waitqueue)读写函数的实现 【转】
  11. Redis 基本数据类型
  12. mysql占用大量写i o_Mysql占用大量写I/O
  13. 16个大数据常见案例分享,看完别说还不懂大数据!
  14. python模块中函数的用法_怎么使用help函数查看python模块中函数的用法
  15. 青龙面板加xdd-plus机器人保姆级教程
  16. 不等距双杆模型_对磁场中双杆模型问题的解析
  17. UE4 统计数据命令描述
  18. Java zip解压工具类
  19. 【历史上的今天】7 月 7 日:C# 发布;Chrome OS 问世;《仙剑奇侠传》发行
  20. 计算机水平熟悉情况,计算机水平如何填

热门文章

  1. 三星s10android10功能,三星S10系列三机对比:都是安卓机皇,体验有何不同?
  2. Cocos Creator JSB绑定 MAC系统环境
  3. UrbanSound8K-城市音频分类实战
  4. 嵌入式学习路线和ROTS开发模式(1)
  5. 酷狗mv采集php,PHP酷狗音乐采集类
  6. zerotier 配置
  7. /usr/bin/xauth: file /home/name/.Xauthority does not exist
  8. 即构微信小程序直播组件是什么?有哪些功能?哪些小程序类目可以使用?
  9. 【地图服务】实现地图上 打点 连线的功能
  10. 复旦大学白悦辰课题组诚聘博士后、科研助理