擅长:python、mysql、java
<p>通常,要获取特定基数中的数字,我们可以执行以下操作:</p>
<pre class="lang-py prettyprint-override"><code>while num > 0:
digit = num % base
num //= base
print(digit)
</code></pre>
<p>使用<code>num = 14, base = 3</code>运行此命令时,我们会得到:</p>
<pre><code>2
1
1
</code></pre>
<p>这意味着三元中的14是112。<br/>
我们可以将其提取到方法<code>digits(num, base)</code>中,并且仅在实际需要将数字转换为字符串时使用<code>np.base_repr(a,3)</code>:</p>
<pre class="lang-py prettyprint-override"><code>def enumerateSpin(n):
s = []
for a in range(0,3**n):
if sum(digits(a, 3)) == n:
ternary_rep = np.base_repr(a,3)
k = len(ternary_rep)
r = (n-k)*'0'+ternary_rep
s.append(r)
return s
</code></pre>
<hr/>
<p><strong>为<code>enumerateSpin(4)</code>输出:</strong></p>
<pre class="lang-py prettyprint-override"><code>['0022', '0112', '0121', '0202', '0211', '0220', '1012', '1021', '1102', '1111', '1120', '1201', '1210', '2002', '2011', '2020', '2101', '2110', '2200']
</code></pre>