2130.Hopscotch

通过数:11提交数:18学校:北京大学保研机试真题 题目列表 标签
题目描述 $Hopscotch$(跳房子)是一种流行的游戏。 规则非常简单:我们在地面上画一些房子,然后扔一块石头。 根据石头的位置,我们决定跳到哪个房子。 这里,我们用 $x$ 轴上的连续正整数坐标表示房子,第 $i$ 个房子的坐标是 $i$。 我们还假设有无限多的房子。 然后,我们定义新的规则如下,每次我们扔石头时: 1. 如果石头落在房子里(标记为 $H$),我们可以从当前房子 $i$ 跳到房子 $3 \times i$; 2. 如果石头落在房子外(标记为 $O$),我们可以从当前房子 $i$ 跳到房子 $i/2$(向下取整)。 例如,初始时在房子 $1$,为了到达房子 $6$,我们可以用两种方式扔石头:$HHHOO$ 或 $HHOHO$。 现在,你的任务是计算从源房子 $n$ 到目标房子 $m$ 所需的最少跳跃次数($k$)。 你还应该输出相应的扔石头的方式。 如果有多种方式,请按字典序输出最小的方式。 输入格式 有多组测试用例。 对于每组测试用例,有两个整数 $n$ 和 $m$($1 \leq n, m \leq 1000$),表示源房子和目标房子。 输入以 $0$ $0$ 结束。 输出格式 对于每组测试用例,输出的第一行是一个整数,表示最少的跳跃次数($k$)。 测试数据保证有解且 $k \leq 25$。 第二行输出相应的扔石头的方式。 输入样例 1 6 0 0 输出样例 5 HHHOO
C
补全
点击调试按钮即可调试代码。

点击提交按钮即可提交代码。