【JSOI 2013】密码
2015-08-28 09:45
507 查看
题目大意
对于一个mm位的十进制整数x=(a0a1a2...am−1)10x=(a_0a_1a_2...a_{m-1})_{10},定义g(x)=∑m−1i=0aig(x)=\sum_{i=0}^{m-1}a_i
定义集合
Sn={x|0<g(x)≤n}S_n = \{ x|0
给出nn,求下面这个式子
∑x∈Sn∑y∈Sn,x<yxy\sum_{x\in S_n} \sum_{y\in Sn, x
n≤1018n\leq 10^{18}
分析
一开始看这题的时候不小心把g(x)g(x)里的∑\sum看成了∏\prod。囧剩下的就是数位DP了。
记cntxcnt_x表示数位和为xx的数的个数,linearxlinear_x表示数位和为xx的所有数的总和,squarexsquare_x表示数位和为xx的数的平方和。
通过枚举当前位选什么,不难写出递推式
cnti=∑9j=1cnti−jcnt_i=\sum_{j=1}^9cnt_{i-j}
lineari=∑9j=110⋅lineari−j+j⋅cnti−jlinear_i=\sum_{j=1}^910\cdot linear_{i-j}+j\cdot cnt_{i-j}
squarei=∑9j=1100⋅squarei−j+20j⋅lineari−j+j2cnti−jsquare_i=\sum_{j=1}^9100\cdot square_{i-j}+20j\cdot linear_{i-j}+j^2cnt_{i-j}
发现三个状态的转移都只与最近99位有关,将它们压成矩阵,用矩阵快速幂转移即可。
时间复杂度O(logn)O(log_n),其中常数为29329^3
相关文章推荐
- js选中当前菜单后高亮显示的导航条
- JS日期的获取与加减
- 安卓解析 json 4种格式 全解析
- jsp、servlet笔记
- XML与JSON的比较
- JavaScript中function的多义性
- 浅谈JavaScript中的string拥有方法的原因
- JS循环中使用bind函数的参数传递问题
- JSF 2 panelGrid example
- JSF 2 link, commandLink and outputLink example
- JSF 2 button and commandButton example
- How to include JavaScript file in JSF
- JavaScript中为什么string可以拥有方法?
- JSF 2 graphicImage example
- JSF 2 outputText example
- JSF 2 multiple select dropdown box example
- JSF 2 dropdown box example
- JSF 2 multiple select listbox example
- JSF 2 listbox example
- JSF 2 radio buttons example