Efficient Exchange
https://nanti.jisuanke.com/t/44331
Google翻译中文题意
您最近在银行获得了一份新奇的货币工作。人们可以在这里付款,并以各种奇怪的货币存入或提取钱。在工作的第一天,您会帮助来自奈梅贾的客户,奈梅贾是一个微不足道的小国,以巨大的硬币而闻名,其价值等于10的幂,即1、10、100、1000等。该客户希望相当大的一笔付款,您不希望携带所有这些硬币往返金库。
因此,您决定先思考。您和客户一样都有大量的尼吉米亚硬币储备(大多数尼吉米亚公民都非常强大)。现在,您要尽量减少在任一方向上交换的硬币总数,以准确支付客户必须支付的费用。
例如,如果客户要支付83个硬币,则有很多方法可以进行兑换。这是三种可能性:
- 方法1: 客户支付8个价值10的硬币和3个价值1的硬币。这需要交换8 + 3 = 11个硬币。
- 方法2:客户支付了一个价值100的硬币,您返回了价值10的硬币和7个价值1的硬币。这需要交换1 +1 + 7 = 9个硬币。
- 方法3:客户支付一枚价值100的硬币和3枚价值1的硬币。您返回2枚价值10的硬币。这需要交换1 + 3 + 2 = 6枚硬币。
事实证明,这样做的最后一种方法需要最少的硬币。
输入
0 ≤ n < 1 0 1000 0\le n < 10^{1000} 0≤n<101000,客户必须支付的金额的一个整数。
输出
输出为进行所需付款而必须兑换的最小硬币数量。
样例输入1
83
样例输出1
6
样例输入2
13
样例输出2
4
样例输入3
12345678987654321
样例输出3
42
题解:
考虑 1254 x 1254x 1254x , 令 a = 12540 , b = 12550 , a = 12540, b = 12550, a=12540,b=12550,
可得 1254 x = 12540 + x 1254x = 12540+x 1254x=12540+x 或者 12550 − 10 + x ,