<blockquote>
<p>in this testcase all the integers will not be converted into even number no matter how many operations we applied .</p>
</blockquote>
<ul>
<li>是的,他们可以。请参阅下面的解决方案</李>
</ul>
<p>这个想法很简单。我没有使用过任何操作,但我会这样做</p>
<ul>
<li>奇数+/-奇数=偶数</li>
<li>奇数+/-偶数=奇数</li>
</ul>
<p>对于一个<code>i</code>,如果<code>A[i]</code>是偶数,我就不在乎了。考虑所有{{CD1}},这样^ {< CD2}}是奇数。<p>
<ul>
<li>如果A[i+1]是奇数,那么在一次运算中,P=odd+odd和Q=odd-odd都是偶数。我将把计数增加1</李>
<li>如果A[i+1]是偶数,那么P=奇数+偶数,Q=奇偶,两者都是奇数。我做过一次手术。现在,我有两个机会,再做一次手术,我可以让两个机会均等。所以,我将把计数增加2</李>
</ul>
<blockquote>
<p>if someone could show me how come testcase2 is done in three operation .</p>
</blockquote>
<ul>
<li><strong>操作1</strong>:<code>[1 6 4 3 5 2]</code>-><code>[7 -5 4 3 5 2]</code>,<code>A[0] = A[0] + A[1]</code>,<code>A[1] = A[0] - A[1]</code></li>
<li><strong>操作2</strong>:<code>[7 -5 4 3 5 2]</code>-><code>[2 12 4 3 5 2]</code>,<code>A[0] = A[0] + A[1]</code>,<code>A[1] = A[0] - A[1]</code></li>
<li><strong>操作3</strong>:<code>[2 12 4 3 5 2]</code>-><code>[2 12 4 8 -2 2]</code>,<code>A[3] = A[3] + A[4]</code>,<code>A[4] = A[3] - A[4]</code></li>
</ul>
<blockquote>
<p>can it be solved with bit manipulation.</p>
</blockquote>
<ul>
<li>我认为你可以,除此之外,我不这么认为</李>
</ul>
<p>下面是一个可能的实现:</p>
<pre><code>def count_ops(A,n):
count = 0
i = 0
done_last = False
while(i < n-1):
if(A[i]%2 == 0):
i+=1
continue
if(i == n-2):
done_last = True
if(A[i+1]%2 == 0):
count += 2
else:
count += 1
i += 2
if(not done_last):
if(A[n-1]%2 == 1):
count += 2
print(count)
return count
</code></pre>
<p>注意<code>done_last</code>标志,我将让您自行决定</p>