#275. 数组清零
数组清零
数组清零
题目描述
小 A 有一个由 个非负整数构成的数组 。他会对数组 重复进行以下操作,直到数组 只包含 。在一次操作中,小 A 会依次完成以下三个步骤:
- 在数组 中找到最大的整数,记其下标为 。如果有多个最大值,那么选择其中下标最大的。
- 从数组 所有不为零的整数中找到最小的整数 。
- 将第一步找出的 减去 。
例如,数组 需要 次操作变成 :
$$[2, 3, 4] \rightarrow [2, 3, 2] \rightarrow [2, 1, 2] \rightarrow [2, 1, 1] \rightarrow [1, 1, 1] \rightarrow [1, 1, 0] \rightarrow [1, 0, 0] \rightarrow [0, 0, 0]$$小 A 想知道,对于给定的数组 ,需要多少次操作才能使得 中的整数全部变成 。可以证明, 中整数必然可以在有限次操作后全部变成 。你能帮他计算出答案吗?
输入格式
第一行,一个正整数 ,表示数组 的长度。
第二行, 个非负整数 ,表示数组 中的整数。
输出格式
一行,一个正整数,表示 中整数全部变成 所需要的操作次数。
样例输入
样例输入 1
3
2 3 4
样例输入 2
5
1 3 2 2 5
样例输出
样例输出 1
7
样例输出 2
13
样例解释
对于第一个样例,数组为 ,操作过程如下:
- 最大值 (下标 ),非零最小值 ,,数组变为 。
- 最大值 (下标 ),非零最小值 ,,数组变为 。
- 最大值 (有多个,选择下标最大的,即最后一个 ),非零最小值 ,,数组变为 。
- 最大值 ,非零最小值 ,,数组变为 。
- 最大值 (选择下标最大的,即第三个 ),非零最小值 ,,数组变为 。
- 最大值 (下标 ),非零最小值 ,,数组变为 。
- 最大值 (下标 ),非零最小值 ,,数组变为 。
共经过 次操作,全部变为 。
数据范围
对于所有测试点,保证 ,。