#P15919. [TOPC 2023] Cutting into Monotone Increasing Sequence

[TOPC 2023] Cutting into Monotone Increasing Sequence

题目描述

单调序列是指随着序列的推进,数值始终一致地增加或一致地减少的序列。换句话说,它表现出向上或向下的稳定趋势。

在单调递增序列中,序列中的每一项都大于或等于前一项。数学上,对于序列 a1,,ana_1, \dots, a_n,它是单调递增的当且仅当对于每个 1i<n1 \le i < n,有 aiai+1a_i \le a_{i+1}。例如,序列 1,2,2,4,51, 2, 2, 4, 5 是单调递增序列,因为每一项都大于或等于前一项。

单调序列在数学的各个领域(包括微积分和分析)中都很重要,因为它们通常能简化函数及其行为分析。它们提供了一种清晰且一致的趋势,使人们更容易理解序列或函数在数值范围内的行为。

我们的一位命题者非常喜欢大整数。在过去几年中,台湾线上程式设计竞赛经常出现涉及大整数的题目。这一次,我们有一个将大整数与单调递增序列结合起来的问题。你的任务是通过在数字之间的空隙中插入逗号 ,,将一个大整数 xx 转换为一个单调递增序列,同时遵守以下约束:

  • 该单调递增序列的最后一项不超过 bb
  • 逗号不能插入在数字 00 之前。
  • 逗号的数量最少。

假设 xx 是一个有 kk 位的整数,表示为 d1d2dkd_1 d_2 \cdots d_k。例如,如果 x=654321=d1d2d6x = 654321 = d_1 d_2 \cdots d_6,且 b=1000b = 1000,我们可以在 d3d_3 之后和 d5d_5 之后插入逗号,将 xx 转换为以下单调递增序列:6,54,3216, 54, 321

请编写一个程序,计算将给定的大整数 xx 转换为由不超过给定整数 bb 的数组成的单调递增序列所需的最少逗号数。如果无法转换,请输出 NO WAY

输入格式

输入包含两个非负整数 xxbb

输出格式

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

654321 1000
2
654321 100
NO WAY

提示

  • x10100000x \le 10^{100000}
  • b<264b < 2^{64}
  • 如果 x>0x > 0,则没有前导零。

翻译由 DeepSeek V3.2 完成