擅长:python、mysql、java
<p>由于暴力强制通过这里的所有数字不是一个选项,您需要首先解决数学问题:</p>
<ol>
<li><em>按升序生成“倒置”数字</li>
<li>如果可能的话,<em>确定有多少个“颠倒”的数字有一定的长度,因为你的指数上限相当高,甚至暴力生成这些数字。在</li>
</ol>
<p>对于第一个,“颠倒”的数字是:</p>
<ul>
<li>长度<em>2n</em>:a<sub>1</sub>…a<sub>n</sub>a'<sub>n</sub>…a'<sub>1</sub></em></li>
<li>长度<em>2n+1</em>:<em>a<sub>1</sub>…a<sub>n</sub>5a'<sub>n</sub>…a'<sub>1</sub></em><br/>
其中<em>a<sub>i</sub></em>是除0以外的任何数字,<em>a'<sub>i<sub/></sub></em>是它的10个补码。在</li>
</ul>
<p>因为相同长度的数字是一位数一位数地比较的,猜猜哪个顺序是升序的。在</p>
<p>第二次</p>
<ul>
<li>长度<em>2n</em>或<em>2n+1</em>的“倒置”数都是<em>a1…an</em>所有可能组合的数目。在</li>
<li>因为前面的表达式非常简单,你甚至可以算出一个求和的公式——所有“倒装”数字的数目,直到长度N</em>。在</li>
</ul>
<p>剩下的部分很简单,我只想补充一下,<a href="https://docs.python.org/2/library/functions.html?highlight=divmod#divmod" rel="nofollow">^{<cd1>}</a>或{a2}可能对生成的算法很有用。在</p>