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

全部评论

相关推荐

04-02 22:40
已编辑
电子科技大学 后端
谢谢大家啦!!!
坚定的芭乐反对画饼_许愿Offer版:有鹅选鹅,没鹅延毕
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务