P15919 [TOPC 2023] Cutting into Monotone Increasing Sequence

题目描述

单调序列是指随着序列的推进,数值始终一致地增加或一致地减少的序列。换句话说,它表现出向上或向下的稳定趋势。 在单调递增序列中,序列中的每一项都大于或等于前一项。数学上,对于序列 $a_1, \dots, a_n$,它是单调递增的当且仅当对于每个 $1 \le i < n$,有 $a_i \le a_{i+1}$。例如,序列 $1, 2, 2, 4, 5$ 是单调递增序列,因为每一项都大于或等于前一项。 单调序列在数学的各个领域(包括微积分和分析)中都很重要,因为它们通常能简化函数及其行为分析。它们提供了一种清晰且一致的趋势,使人们更容易理解序列或函数在数值范围内的行为。 我们的一位命题者非常喜欢大整数。在过去几年中,台湾线上程式设计竞赛经常出现涉及大整数的题目。这一次,我们有一个将大整数与单调递增序列结合起来的问题。你的任务是通过在数字之间的空隙中插入逗号 `,`,将一个大整数 $x$ 转换为一个单调递增序列,同时遵守以下约束: - 该单调递增序列的最后一项不超过 $b$。 - 逗号不能插入在数字 $0$ 之前。 - 逗号的数量最少。 假设 $x$ 是一个有 $k$ 位的整数,表示为 $d_1 d_2 \cdots d_k$。例如,如果 $x = 654321 = d_1 d_2 \cdots d_6$,且 $b = 1000$,我们可以在 $d_3$ 之后和 $d_5$ 之后插入逗号,将 $x$ 转换为以下单调递增序列:$6, 54, 321$。 请编写一个程序,计算将给定的大整数 $x$ 转换为由不超过给定整数 $b$ 的数组成的单调递增序列所需的最少逗号数。如果无法转换,请输出 `NO WAY`。

输入格式

输入包含两个非负整数 $x$ 和 $b$。

输出格式

输出将 $x$ 转换为由不超过 $b$ 的数组成的单调递增序列所需的最少逗号数。如果无法转换,请输出 `NO WAY`。

说明/提示

- $x \le 10^{100000}$ - $b < 2^{64}$ - 如果 $x > 0$,则没有前导零。 翻译由 DeepSeek V3.2 完成