题解 | #游游的除2操作#
游游的除2操作
https://www.nowcoder.com/practice/b797f46aa75145a0bbe112099f7cbd18
#include <iostream>
using namespace std;
int main() {
int a, b,min,cnt=0,sum=0;//min是此时最小值,cnt是已经处理过的数量,sum是总计算次数
cin>>a;
for(int i=1;i<=a;i++){
cin>>b;
if(i==1){
cnt++;
min=b;
continue;
}
while(min!=b){
if(b>min){
sum++;
b/=2;
}
else {
min/=2;
sum+=cnt;//如果最小值改变则前面的所有数都需要再除2
}
}
cnt++;
}
cout<<sum;
}
// 64 位输出请用 printf("%lld")

