当前位置: 首页 > news >正文

ZT10 游游的除2操作

描述

游游拿到了一个数组,她每次可以进行如下操作:
·选择一个元素,使其除以2,向下取整。
游游想知道,她最少多少次操作可以使得所有元素相等?

输入描述:

第一行输入一个正整数n,代表数组的长度。
第二行输入n个正整数ai​,代表数组的元素。
1≤n≤100000
1≤ai​≤10^9

输出描述:

一个整数,代表最少的操作次数。

示例1

输入:

4
1 2 1 3

输出:

2

说明:

 
 

第二个数和第四个数分别操作1次即可。

示例2

输入:

1
114514

输出:

0

说明:

 
 

不需要任何操作。

一、问题分析

首先读题,仔细看描述中的内容,发现需求是

1.给定一个数组

2.对数组内的数字进行除以2的操作

3.每次操作记录次数

4.除2的目的是为了让数组内所有数字相等

5.问最少的除2操作(使数组内数字相等)是多少次

二、解题思路

1.首先对数组进行排序

2.这样的话第一个元素就是最小的元素了

3.然后对数组内每个元素进行除2的操作并记录次数,除到和最小值相同或者小于最小值

4.如果发现某个数字除2之后小于最小值,

5.更新最小值,然后从头开始继续

三、具体步骤

使用的语言是C

#include <stdio.h>
#include <stdlib.h>

int compare(const void* a, const void* b) {
    return (*(int*)a - *(int*)b);
}

int main() {
    int n;
    if(scanf("%d", &n) != EOF) {
        if(n == 0) {
            printf("0\n");
            return 0;
        }
        int* a = (int*)malloc(sizeof(int) * n);
        for(int i = 0; i < n; i++) {
            scanf("%d", &a[i]);
        }
        qsort(a, n, sizeof(int), compare);
        int min = a[0];
        int count = 0;
        for(int i = 0; i < n; ++i) {
            while(a[i] != min) {
                a[i] /= 2;
                count++;
                if(a[i] < min) {
                    min = a[i];
                    i = 0;
                }
            }
        }
        printf("%d\n", count);
        free(a);
    } else {
        printf("no input\n");
    }
}

相关文章:

  • 《FFTformer:基于频域的高效Transformer用于高质量图像去模糊》
  • uniprot系列相关数据库介绍
  • Leetcode-668. Kth Smallest Number in Multiplication Table[C++][Java]
  • 鸿蒙5.0实战案例:基于AVCodecKit的音视频解码及二次处理播放
  • 算法与数据结构(旋转链表)
  • 【每日八股】Redis篇(二):数据结构
  • Docker部署 MongoDB及常用命令
  • 定时任务特辑 Quartz、xxl-job、elastic-job、Cron四个定时任务框架对比,和Spring Boot集成实战
  • Linux7-线程
  • DDD - 整洁架构
  • vscode设置终端复制快捷键(有坑!!!)
  • 《论多源数据集成及应用》审题技巧 - 系统架构设计师
  • 大模型应用开发:核心技术与领域实践
  • Python常见面试题的详解19
  • WPF框架学习
  • maven模块化管理
  • openstack部署
  • pikachu靶场搭建教程
  • RocketMq学习笔记
  • 如何在idea中搭建SpringBoot项目
  • 贵州茅台一季度净利268亿元增长11.56%,系列酒营收增近两成
  • 文天祥与“不直人间一唾轻”的元将唆都
  • 商务部新闻发言人就波音公司飞回拟交付飞机答记者问
  • 法院为“外卖骑手”人身权益撑腰:依法认定实际投保人地位
  • 国家税务总局:“二套转首套”可以享受贷款利息个税专项扣除
  • 新任海南琼海市委副书记陈明已主持市政府党组全面工作