AGC011-E Increasing Numbers

Posted grice

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AGC011-E Increasing Numbers相关的知识,希望对你有一定的参考价值。

题意

给定一个数(n)(n≤10^{500,000}),问(n)最少可以拆分成几个不降数的和。一个不降数是在十进制位下,从高位往低位看,每个数都不会比高位的数更小的数

做法

不降数可以拆成若干个形似(1111...111)的数相加
位数为(l)的全(1)数可以写成(dfrac{10^{l+1}-1}{9})

(N=sumlimits_{i=1}^k dfrac{10^{a_i}-1}{9})
通过手玩可以进一步发现充分条件:(9|k)

写成(N+9k=sumlimits_{i=1}^{9k}10^{a_i})
枚举(k),判断(N+9k)的数位之和是否小于等于(9k)就好了

高精度加(1)复杂度是均摊的,(O(位数))

以上是关于AGC011-E Increasing Numbers的主要内容,如果未能解决你的问题,请参考以下文章

AtCoderAGC011 E - Increasing Numbers

[agc011e]increasing numbers

[AGC011E] Increasing Numbers [数学]

在python中使用zip函数

用 write.csv 保存时,excel 更改了 r 数据帧的科学记数法

LeetcodeLongest Increasing Subsequence