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

动力无限西安网站建设汕头seo网络推广服务

动力无限西安网站建设,汕头seo网络推广服务,品牌宣传网站建设,企业官网邮箱怎样申请描述 游游拿到了一个数组,她每次可以进行如下操作: 选择一个元素,使其除以2,向下取整。 游游想知道,她最少多少次操作可以使得所有元素相等? 输入描述: 第一行输入一个正整数n,代表数…

描述

游游拿到了一个数组,她每次可以进行如下操作:
·选择一个元素,使其除以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");}
}

http://www.dtcms.com/wzjs/76631.html

相关文章:

  • 企业开通网站的费用怎么做分录网站查询地址
  • 珠海网络排名优化百度有专做优化的没
  • ui设计师做网站百度知道网页版入口
  • 乐山网站制作公司成品网站seo
  • 黄骅贴吧招聘榆林市网站seo
  • 做水印的网站昆明网站seo优化
  • 沈阳网站开发培训多少钱杭州排名优化公司
  • 彩票网站建设开发网站推广优化的原因
  • 国内做网站好的公司seo代运营
  • 四川省建设厅招标网站宁波公司做网站
  • 传送门网站是怎么做的搜索引擎优化的重要性
  • 策划公司网站建设各大网站推广平台
  • 贝壳找房官网 二手房手机系统优化工具
  • 贵德县wap网站建设公司应用宝下载
  • 金鹏建设集团网站企业官方网站推广
  • 网站建设策划书5000字关键词优化软件排行
  • 铸铁加工平台seo优化推广技巧
  • 松江品划做企业网站为企业策划一次网络营销活动
  • 育婴网站模板武汉seo网站优化
  • 网上做调查网站快排seo排名软件
  • 西部数码 网站建设互联网营销行业前景
  • 广州网站优化工具服务网络营销论文
  • 网站后台管理模块世界球队最新排名
  • 昆山网站建设网站一个产品营销策划方案
  • 绍兴 网站制作发布新闻最快的网站
  • 三只松鼠的网站建设成都网站seo公司
  • 中拓网络科技有限公司东营优化路网
  • 网站模板去哪下载深圳网站设计
  • 上海公共招聘网首页专业搜索引擎seo公司
  • 英文网站备案seo+网站排名