问题描述:

 多多鸡有N个魔术盒子(编号1~N),其中编号为i的盒子里有i个球。
多多鸡让皮皮虾每次选择一个数字X(1 <= X <= N),多多鸡就会把球数量大于等于X个的盒子里的球减少X个。
通过观察,皮皮虾已经掌握了其中的奥秘,并且发现只要通过一定的操作顺序,可以用最少的次数将所有盒子里的球变没。

那么请问聪明的你,是否已经知道了应该如何操作呢?

输入描述:

第一行,有1个整数T,表示测试用例的组数。
(1 <= T <= 100)
接下来T行,每行1个整数N,表示有N个魔术盒子。
(1 <= N <= 1,000,000,000)

输出描述:

共T行,每行1个整数,表示要将所有盒子的球变没,最少需要进行多少次操作。

输入用例:

3
1
2
5

输出用例:

1
2
3

思路分析:

首先想到的就是通过二分法来解决,每次取中间的数,后面的数字一次减x,再次寻找数组起始点与中间数的中间值,直到数组中间值等于a[0],就相当于求二分法的时间复杂度log(n)底数为2。然后通过分析,如果是2的整数倍,那么a[n]还需要一步操作,如果不是2的整数倍也需要对a[0]进行减1操作。所以就是求 log(n)+1。看到有人通过求二进制的长度解决这道题,道理一样,求二级制也是不断除以2,其长度就是除以2的次数加1

代码实现:

import java.util.Scanner;public class MagicTool {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int N = scanner.nextInt();int[] a = new int[N];for(int i=0;i< a.length;i++){a[i]=scanner.nextInt();a[i]= (int) (Math.log(a[i])/Math.log(2))+1;}for(int i=0;i<a.length;i++){System.out.println(a[i]);}}

拼多多笔试题(一):多多的魔术盒子相关推荐

  1. 拼多多笔试题 回合制游戏

    拼多多笔试题 回合制游戏 题目描述 解法1(深度优先搜索) 解法2(数学规律) 昨晚心血来潮,拿了一份校招真题练练手,无奈这道题一直没有AC,只有75%的通过率,用了深度优先搜索+记忆化搜索最终还是会 ...

  2. 校招拼多多笔试题(前端工程师)

    考试时间:2017-09-02-提前批内推-笔试 1) 测试代码如下: var a = {}; b = { key: 'b' }; c = { key: 'c' }; a[b] = 123; a[c] ...

  3. 拼多多笔试题(三):多多的电子字典

    问题描述: 多多鸡打算造一本自己的电子字典,里面的所有单词都只由a和b组成. 每个单词的组成里a的数量不能超过N个且b的数量不能超过M个. 多多鸡的幸运数字是K,它打算把所有满足条件的单词里的字典序第 ...

  4. 2019提前批——拼多多笔试题

    一(85) 给定两个数组A和B.其中数组A是几乎严格升序排列的,几乎的定义是只需改变其 中一个数,即可满足完全升序排列. 你的任务是从数组A中找到这个数字,并从数组B中选取1数将其替换,使得数 组A是 ...

  5. python 拼多多秒杀_关于 拼多多笔试题-简单易懂的秒杀服务

    实现一个简易的秒杀服务,有3个接口: 1. 添加一个秒杀活动 addActivity(int startTime, int endTime, int goodsId, int limitQuantit ...

  6. [Nowcoder] 大整数相乘(拼多多笔试题)

    有两个用字符串表示的非常大的大整数,算出他们的乘积,也是用字符串表示.不能用系统自带的大整数类型. 输入描述: 空格分隔的两个字符串,代表输入的两个大整数 输出描述: 输入的乘积,用字符串表示 输入例 ...

  7. 拼多多笔试题 回合制角色扮演

    题目描述 你在玩一个回合制角色扮演的游戏.现在你在准备一个策略,以便在最短的回合内击败敌方角色.在战斗开始时,敌人拥有HP格血量.当血量小于等于0时,敌人死去.一个缺乏经验的玩家可能简单地尝试每个回合 ...

  8. 【拼多多笔试题】小熊战斗力

    解题思路 对小熊战斗力进行排序,糖果填充的饥饿值进行排序 遍历小熊,对其需要的饥饿值在谈糖果中进行二分查找,查找的终止条件为,找到小于等于当最接近小熊需要饥饿值得数字,然后小熊的需要饥饿值减去糖果可以 ...

  9. 拼多多笔试题(六):选靓号

    问题描述: A 国的手机号码由且仅由 N 位十进制数字(0-9)组成.一个手机号码中有至少 K 位数字相同则被定义为靓号.A 国的手机号可以有前导零,比如 000123456 是一个合法的手机号. 小 ...

最新文章

  1. MATLAB常用的学习的网站
  2. python excle写数据
  3. python入门要多久-初学者如何快速上手python入门要多久
  4. 【报错笔记】做struts项目建立jsp文件老是报错
  5. 【几何/分治】【最短路】【数学期望】Day 10.24
  6. E2: A Framework for NFV Applications, SOSP' 15
  7. Ubuntu/Mac彻底解决手机ADB识别问题
  8. Leetcode每日一题:514.freedom-trail(自由之路)
  9. iOS 9 适配中出现的坑
  10. 实时计算在有赞的实践-效率提升之路
  11. chrome浏览器再次打开黑屏一段时间
  12. R语言 echarts4r 不显示图形_【课程预告】清华定量俱乐部lt;R专场gt;第三讲——R可视化基础...
  13. 【数据预测】基于matlab鸟群算法优化BP神经网络数据预测【含Matlab源码 1772期】
  14. 人生成功的十大说话技巧
  15. 安装虚拟机不支持i686 cpu的解决办法
  16. STM32F107单片机驱动Dp83848以太网芯片程序 项目开发用到了Dp83848这一个以太网芯片,本人发现其配置起来比较麻烦,所以整理了一份STM32F107单片机驱动Dp83848的程序代码例
  17. TorchScript (将动态图转为静态图)(模型部署)(jit)(torch.jit.trace)(torch.jit.script)
  18. 雪花飘落代码java_JavaScript实现雪花飘落效果
  19. 视频号怎么添加商品带货扩展链接规则
  20. ROSCon2018国际会议讲座录像和讲稿PPT

热门文章

  1. Python编程:从入门到实践(三)
  2. socket: too many open files
  3. Realsense T265双目+IMU传感器追踪相机的环境配置指南(Ubuntu+Windows)
  4. 服务器意外断电系统崩溃,Docker 实例不能正常启动 可能诱因:服务器意外断电 操作系统故障 运维操作有误...
  5. 家用洗地机哪种好?入门级智能洗地机推荐
  6. Java 字节区/字符区缓冲流
  7. Linux那些事儿之我是U盘(50)跟着感觉走(二)
  8. Android服务器——TomCat服务器的搭建
  9. CMD 命令语言 大全1
  10. 如何让自己重拾自信?