擅长:python、mysql、java
<p>高度为<code>N</code>的金字塔中有<code>1 + 2 + ... + N</code>块。这减少到<code>N * (N + 1) / 2</code>。所以您需要找到<code>(N^2 + N) / 2</code>形式的最大整数,它小于或等于您选择的数字<code>blocks</code>。二次函数相当简单:<code>N^2 + N - 2 * blocks = 0</code>,根在<code>N = floor((-1 +/- sqrt(1 + 8 * blocks)) / 2)</code>。由于<code>blocks</code>是一个正整数,负根永远不会应用于您的情况。您可以使用<code>int</code>表示<code>floor</code>,使用{<cd11>}表示{<cd12>},得到:</p>
<pre><code>blocks = int(input("Enter number of blocks: "))
print(f'You can build a pyramid {int(0.5 * ((8 * blocks + 1)**0.5 - 1))} blocks high')
</code></pre>