华为ID机试 -- 分糖果 E100

news/2024/11/19 19:30:14/

题目描述

小明从糖果盒中随意抓一把糖果,每次小明会取出一半的糖果分给同学们。

当糖果不能 平均分配只时,小明可以选择从糖果盒中(假设盒中糖果足够)取出一个糖果或放回一个糖果。

小明最少需要多少次(取出、放回和平均分配均记一次),能将手中糖果分至只剩一颗。

输入描述

抓取的糖果数(n < 10000000000)

输出描述

最少分至一颗糖果的次数

示例

输入

15

输出

5

说明

1.15+1=16;

2.16/2=8;

3.8/2=4;

4.4/2=2;

5.2/2=1;

题解

  • 如果末位不等于0, 说明为偶数,不需要拿或者放
  • 如果倒数第二位为 0 则减去一次可以消除至少两位
  • n ≥ \geq 3
    • n = = = 3 的时候,减一需要分一次即可, 加一需要分两次,选择减一
    • 其它说明有多个1 , 增加一个可以消除多个1 ,使拿糖果的次数降为最少

源码Java

public class DivCandy {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int div = 0;while (n > 1) {// 如果末位不等于0, 说明为偶数,不需要拿或者放if ((n & 1) == 0) {n = n >> 1;} else if ((n & 2) == 0) {// 如果倒数第二位为 0  则减去一次可以消除至少两位n = n - 1;} else {// n 等于 3 的时候,减一位分一次可以为0if (n == 3) {n = n - 1;} else if ( n > 3 ) {// 其他情况说明有多个1 , 增加一个可以消除多个1 ,使拿去糖果的次数降为最小n += 1;}}div++;}System.out.println(div);}
}

http://www.ppmy.cn/news/1548308.html

相关文章

Linux 系统下的硬件视频加速

在浏览器研发中&#xff0c;GPU 硬件加速相关的问题常常令人头疼&#xff0c;而这些问题中&#xff0c;视频播放更是棘手。回顾以往&#xff0c;在基于 Android 系统开发浏览器时&#xff0c;我曾撰写了一系列与浏览器视频播放相关的技术文章&#xff1a; Chromium HTML Video …

itss认证的级别划分

级别划分 一级&#xff08;基本级&#xff09;&#xff1a;这是最基础的级别&#xff0c;主要是让企业初步建立 IT 服务管理体系&#xff0c;对人员、过程、技术和资源等要素有基本的管理要求。企业能够提供基础的 IT 服务&#xff0c;如简单的桌面运维服务等。二级&#xff0…

通过PHP创建AWS的CloudFront并绑定证书添加备用域名

如果你要做一个动态绑定域名到AWS服务器的功能&#xff0c;那一定会经历以下事情&#xff1a; 1、申请证书 2、创建源S3&#xff08;静态&#xff09;或者EC2 &#xff08;去后台手动操作&#xff09; 3、创建CloudFront 4、绑定证书到CloudFront 5、添加备用域名 如果是…

深度学习--优化器

笔记内容侵权联系删 优化器 在梯度下降算法中&#xff0c;有各种不同的改进版本。在面向对象的语言实现中&#xff0c;往往把不同的梯度下降算法封装成一个对象&#xff0c;称为优化器。 算法改进的目的&#xff0c;包括但不限于: 加快算法收敛速度; 尽量避过或冲过局部极值; …

探秘 RPC:揭开远程过程调用的实现原理

一、引言 在分布式系统蓬勃发展的今天&#xff0c;不同节点上的服务之间需要频繁地进行交互与协作&#xff0c;以共同完成复杂的业务逻辑。远程过程调用&#xff08;Remote Procedure Call&#xff0c;简称 RPC&#xff09;作为一种重要的通信机制&#xff0c;使得在分布式环境…

“乐鑫组件注册表”简介

当启动一个新的开发项目时&#xff0c;开发者们通常会利用库和驱动程序等现有的代码资源。这种做法不仅节省时间&#xff0c;还简化了项目的维护工作。本文将深入探讨乐鑫组件注册表的概念及其核心理念&#xff0c;旨在指导您高效地使用和贡献组件。 概念解析 ESP-IDF 的架构…

rk3399开发环境使用Android 10初体验蓝牙功能

版本 日期 作者 变更表述 1.0 2024/11/10 于忠军 文档创建 零. 前言 由于Bluedroid的介绍文档有限&#xff0c;以及对Android的一些基本的知识需要了(Android 四大组件/AIDL/Framework/Binder机制/JNI/HIDL等)&#xff0c;加上需要掌握的语言包括Java/C/C等&#xff0…

HTML、CSS

HTML、CSS 什么是HTML、CSS? HTML(HyperText Markup Language):超文本标记语言 超文本&#xff1a;超越了文本的限制&#xff0c;比普通文本更加强大。除了文字信息&#xff0c;还可以定义图片、音频、视频等内容标记语言&#xff1a;由标签构成的语言HTML标签都是预定义好的…