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

原文地址:https://www.cnblogs.com/nishida-rin/p/12271130.html