small multiple(from Atcoder)

鸣谢QYQYQYQYQYQ

先上题面



这道题目如果纠结倍数呢,会炸int、炸longlong

那么该怎么办呢

不妨从答案倒推一下

既然输出的是数位和 数位和是相比而言很小的数字了

那么可以用最短路来实现它


用节点的序号来表示 当前的数模k的值

用所连边的值来表示 数位的值变化了多少(不变就为0)

x->x+1 1

x->x*10 0

跑从1到0的最短路就可以了


还有一个小细节

输出的值是d[0]+1 而不是d[0]

为什么呢

因为1本身的数位和就是1啊 不能省去的

posted @ 2018-04-04 13:25  Eliza_Herb  阅读(88)  评论(0编辑  收藏  举报