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啊 不能省去的