【组合数学】关于一道数组价值和问题
  • 板块学术版
  • 楼主Christophe_
  • 当前回复26
  • 已保存回复26
  • 发布时间2022/9/12 15:16
  • 上次更新2023/10/27 11:50:34
查看原帖
【组合数学】关于一道数组价值和问题
335552
Christophe_楼主2022/9/12 15:16

题目描述

对于数组元素均不大于 99 的正整数数组 aa,定义数组 aa 的价值为将数组元素拼接在一起得到的十进制数,例如数组 a={1,1,4,5,1,4}a=\{1,1,4,5,1,4\} 的价值 vala=114514val_{a}=114514 .

给定正整数 n,m (1m9)n,m\ (1\le m\le 9),求长度为 nn 且所有元素均不大于 mm 的所有非严格单调递增的正整数数组的价值和,答案对 109+710^9+7 取模.

数据范围

1n1061\le n\le 10^6

1n10181\le n\le 10^{18}

蒟蒻的思路

DPDP,令所求为 fn,mf_{n,m},转移显然.

初值: f1,m=m(m+1)2f_{1,m}=\frac{m(m+1)}{2}

转移: fn,m=10×(i=1mfn1,i)+m(m+1)(nm+1)n(n+1)(n1)Cn+m1n2f_{n,m}=10\times(\sum\limits_{i=1}^{m}{f_{n-1,i}})+\frac{m(m+1)(nm+1)}{n(n+1)(n-1)}C_{n+m-1}^{n-2}

时间复杂度:O(n)O(n)

巨佬的思路

显然有 fn,6=(n+5)(n+4)(n+3)(n+2)((9n+59)10n54n59)9720f_{n,6}=\frac{(n+5)(n+4)(n+3)(n+2)((9n+59)10^n-54n-59)}{9720}fn,mf_{n,m} 不难求出.

时间复杂度:O(logn)O(\log n)

Question

如何求得 fn,mf_{n,m} 的通式?

2022/9/12 15:16
加载中...