回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在努力解决这个问题:</p>
<blockquote>
<p>A list is initialized to <code>["Sheldon", "Leonard", "Penny", "Rajesh", "Howard"]</code>, and then undergoes a series of operations. In each operation, the first element of the list is moved to the end of the list and duplicated. For example, in the first operation, the list becomes <code>["Leonard", "Penny", "Rajesh", "Howard", "Sheldon", "Sheldon"]</code> (with <code>"Sheldon"</code> being moved and duplicated); in the second operation, it becomes <code>["Penny", "Rajesh", "Howard", "Sheldon", "Sheldon", "Leonard", "Leonard"]</code> (with "Leonard" being moved and duplicated); etc. Given a positive integer <em>n</em>, find the string that is moved and duplicated in the <i>n</i>th operation. [paraphrased from <a href="https://codeforces.com/problemset/problem/82/A" rel="nofollow noreferrer">https://codeforces.com/problemset/problem/82/A</a>]</p>
</blockquote>
<p>我已经写了一个有效的解决方案,但是当<em>n</em>很大的时候它太慢了:</p>
<pre><code>l = ['Sheldon','Leonard','Penny','Rajesh','Howard']
n = int(input()) # taking input from user to print the name of the person
# standing at that position
for i in range(n):
t = l.pop(0)
l.append(t)
l.append(t)
#debug
# print(l)
print(t)
</code></pre>
<p>我怎样才能做得更快?你知道吗</p>