P1132 数字生成游戏

题目描述

小明完成了这样一个数字生成游戏,对于一个不包含 0 的数字 s 来说,有以下 3 种生成新的数的规则:

  1. 将 s 的任意两位对换生成新的数字,例如 143 可以生成 314,413,134;

  2. 将 s 的任意一位删除生成新的数字,例如 143 可以生成 14,13,43;

  3. 在 s 的相邻两位之间 si​,si+1​ 之间插入一个数字 x,x 需要满足 si​<x<si+1​。例如 143 可以生成 1243,1343,但是不能生成 1143,1543 等。

现在小明想知道,在这个生成法则下,从 s 开始,每次生成一个数,可以用然后用新生成的数生成另外一个数,不断生成直到生成 t 至少需要多少次生成操作。

另外,小明给规则 3 又加了一个限制,即生成数的位数不能超过初始数 s 的位数。若 s 是 143,那么 1243 与 1343 都是无法生成的;若 s 为 1443,那么可以将 s 删除变为 143,再生成 1243 或 1343。

输入格式

第一行包含 1 个正整数,为初始数字 s。

第二行包含一个正整数 m,为询问个数。

接下来 m 行,每行一个整数 t(t 不包含 0),表示询问从 s 开始不断生成数字到 t 最少要进行多少次操作。任两个询问独立,即上一个询问生成过的数到下一个询问都不存在,只剩下初始数字 s。

输出格式

共 m 行,每行一个正整数,对每个询问输出最少操作数,如果无论如果无论也变换不成,则

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芙宁娜的狗是我

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值