Atcoder DDCC2020Qual_D题解

题面

题意:
给你一个数,他的前 \(d_1\) 位都是 \(c_1\) ,接下来 \(d_2\) 位是 \(c_2\) ,以此类推。每一次操作,你可以选两个相邻的数码,将它们相加以后放回去。问多少次操作以后这个数会变成 \(1\)\(\Sigma d_i\leq10^{15}\)


举个例子。 \(2378\) 可以变成 \(2108\)\(578\) 。可以发现,第一种变化方法,他的数字总和恰好减小了 \(9\) ,而第二种方法,他的数位个数减小了 \(1\) 。我们的目标是让他数字总和小于 \(9\) 且只剩一位数,那么我们操作的次数可以计算出是唯一的。算出数字和减到一位数的操作次数是 \((sum-1)\div 9\) ,数字位数剩最后一位的操作次数为 \(num-1\) ,两者相加就是你要的答案。

代码

posted @ 2022-04-01 19:20  1358id  阅读(35)  评论(0编辑  收藏  举报