题解

1 条题解

  • 5
    @ 2017-11-06 18:56:33

    我们可以发现,如果我们把一个数\(x\)加上1,其各个位的和\(Ans\)也会加1。
    如果我们把这个数\(x \times 10\),其答案\(Ans\)则会不变。

    我们可以这样做

    从0开始,对于每个数\(x\),向\(x+1\)连一条边权为1的边,向\(x \times 10\)连一条边权为0的边。

    如果\(x+1\)或\(x \times 10\)超过了\(K\),则对\(K\)取模。

    这样做我们可以得到答案就是1 + (点1 到 点0的最短路)

    为什么是这样?如果我们从0出发,经过若干个\(+1\)和\( \times 10\)这两种操作后又回到了0,那么说明这些操作后产生的这个数一定是\(K\)的倍数,这个数的各个位上数字的和一定是这条路径的长度。


    问:那为什么用1到0的最短路\(+1\)呢,为什么不用0的呢?
    答:因为0到0的最短路永远是0。。。


  • 1

信息

难度
8
分类
(无)
标签
(无)
递交数
18
已通过
5
通过率
28%
上传者