擅长:python、mysql、java
<p>在为任何给定的字符串长度找到单个解决方案后,代码将退出。碰巧,对于<code>n</code>到23的任何值都有一个简单的解决方案</p>
<p>然而,当我们得到n=24时,所有前导的<code>1</code>的开销最终滑过了小数的各种数值性质,并且没有这样的解</p>
<p>我更改了算法find<em>all</em>中的指令插入,并在每个循环前后添加了一个简单的<code>time()</code>调用</p>
<pre><code>def loop(n):
for x in range(2,n+1):
start = time()
for i in range(ones(x),ones(x)*2):
check(str(i))
print(x, time() - start)
</code></pre>
<p><code>n</code>的前几个值的计时如下</p>
<pre><code>n time (sec)
2 0.00010895729064941406
3 0.0007987022399902344
4 0.008989572525024414
5 0.08109426498413086
6 0.6398007869720459
7 6.47220778465271
8 70.14981818199158
</code></pre>
<p>如果您编写只处理非递减序列(数字按数字顺序排序)的代码,并进行检查以确保乘积在和的范围内,则可以大大加快速度</p>