假设我们有一个值 n,考虑一个包含 n 个元素的数组 nums,其中所有 i 的 arr[i] = (2*i)+1。现在在一个操作中,我们可以选择两个索引 x 和 y,其中 0 <= x, y < n 并从 nums[x] 中减去 1,然后将 1 添加到 nums[y]。我们必须使数组的所有元素都相同。因此,如果我们有 n,我们必须找到使 nums 的所有元素相同所需的最少操作次数。
因此,如果输入像 n = 4,那么输出将是 4,因为对于 n 数组是 [1,3,5,7],现在在第一次操作之后我们可以使数组像 [2,3,5,6 ],在第二次操作之后我们可以制作[3,3,5,5],然后在第三次[4,3,4,5]之后,最后是[4,4,4,4]。所以现在所有人都是平等的。
为了解决这个问题,我们将按照以下步骤操作 -
答案:= 0
如果 n 等于 1,则
返回答案
q:= (n/2) -1 的商
j:= 1
当 q>=0 时,做
ans:= ans + (nj)
q := q - 1
j := j + 2
返回答案
让我们看看以下实现以获得更好的理解 -
def solve(n): ans=0 if n==1: return ans q=(n//2)-1 j=1 while q>=0: ans=ans+(n-j) q-=1 j+=2 return ans n = 4 print(solve(n))
4输出结果
4