我们希望 尽可能快地让 a1 成为最大值。直觉上,每次应该从当前最大的 ai (i≥2)转移值到 a1,这样 a1 增长最快,其他元素尽快下降。
因此可以:
给定正整数 n 和一个大小为 n 的数组。小种可以对这个数组执行若干次以下操作:选择一个下标 i 令 x=[2ai] (即向下取整),令a1=a1+x,ai=ai−x 。
小钟需要求出最少的操作次数使得 ai 成为数组中最大的元素,即对于任意的 i(2<=i<=n) 满足 ai<a1 。题目保证给定数据一定存在答案。
请你计算出最少的操作次数是多少。
输入包括多组测试数据。
输入第一行包括一个正整数 T(1<=T<=100) ,表示测试数据的组数。
每组测试数据的第一行有一个整数 n(1<=n<=105) ,表示数组的大小;
接下来的一行有 n 个整数 a1,a2,…,an(2<=ai<=109) ,表示题目给定的数组。
保证每个测试点的所有测试数据的 n 的和不超过 2∗105 。
对于每组测试数据,输出一个正整数表示使得 ai,成为最大元素的最少的操作次数。
输入
2
3
2 4 5
2
3 2
输出
2
0
对于第一组测试数据,可以选择下标3,数组变为[4,4,3],然后选择下标2,数组变为[6,2,3],此时a1是数组中最大的元素,操作次数为2。可以证明不存在更少的操作次数使得a1成为最大的元素。
对于第二组测试数据,由于a1本来就已经是最大元素,故不需要进行任何操作。