题解 | #游游的除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")

全部评论

相关推荐

起名字真难233:人家只有找猴子的预算,来个齐天大圣他们驾驭不住呀😂😂
点赞 评论 收藏
分享
03-16 22:00
武汉大学 C++
幸福的小熊猫想要offer:我阿里投的 c++岗,面试官说自己是做 java 的,c++这辈子才有了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务