6
您可以通过加倍并重新排列来达到此数字吗?
受到Math.SE上这个问题的启发。 首先,1您可以重复执行以下两个操作之一: 将数字加倍。 要么 以任何您想要的方式重新排列其数字,但不得有任何前导零。 以链接的Math.SE帖子为例,我们可以1000通过以下步骤进行操作: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 125, 250, 500, 1000 您可以通过此过程获得哪些数字,最短的解决方案是什么? 挑战 给定正整数,如果可能的话N,确定N上述过程可以达到的最短整数序列。如果有几个最佳解决方案,请输出其中任何一个。如果不存在这样的序列,则应输出一个空列表。 该序列可以采用任何方便,明确的字符串或列表格式。 您可以编写程序或函数,通过STDIN(或最接近的替代方案),命令行参数或函数自变量获取输入,并通过STDOUT(或最接近的替代方案),函数返回值或函数(out)参数输出结果。 这是代码高尔夫球,因此最短的答案(以字节为单位)获胜。 测试用例 这是所有可达的数字列表,最大为256,包括256。第一列是数字(您的输入),第二列是最佳步骤数(可用于检查解决方案的有效性),第三列是专栏是到达那里的一种最佳顺序: 1 1 {1} 2 2 {1,2} 4 3 {1,2,4} 8 4 {1,2,4,8} 16 5 {1,2,4,8,16} 23 7 {1,2,4,8,16,32,23} 29 10 {1,2,4,8,16,32,23,46,92,29} 32 …