news 2026/7/7 7:53:11

(新B卷,100分)- 分糖果(Java JS Python C)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
(新B卷,100分)- 分糖果(Java JS Python C)

(新B卷,100分)- 分糖果(Java & JS & Python & C)

题目描述

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

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

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

输入描述

抓取的糖果数(<10000000000):15

输出描述

最少分至一颗糖果的次数:5

用例
输入15
输出5
说明
  1. 15+1=16;
  2. 16/2=8;
  3. 8/2=4;
  4. 4/2=2;
  5. 2/2=1;
题目分析

本题由于是每次折半,因此本题数量级即便很大,也不怕超时。

没有了超时的后顾之忧,本题,直接可以暴力逻辑求解,假设输入的是num,分配次数count初始为0,那么:

  • 如果num % 2 == 0,则可以直接折半,此时分配次数count++, num /= 2
  • 如果num % 2 !=0,则不可以直接折半,此时需要开两个分支:
  1. 取出一个糖,即num += 1,然后分配次数count++,之后继续前面折半逻辑
  2. 放回一个糖,即num -= 1,然后分配次数count++,之后继续前面折半逻辑

最终我们只需要在众多分支中,取最少的count即可。

上面逻辑可以基于递归实现。具体实现请看代码。

Java算法源码
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println(getResult(sc.nextLong())); } public static long getResult(long num) { int[] ans = {Integer.MAX_VALUE}; recursive(num, 0, ans); return ans[0]; } public static void recursive(long num, int count, int[] ans) { if (num == 1) { ans[0] = Math.min(ans[0], count); return; } if (num % 2 == 0) { recursive(num / 2, count + 1, ans); } else { recursive(num + 1, count + 1, ans); recursive(num - 1, count + 1, ans); } } }
JS算法实现
/* JavaScript Node ACM模式 控制台输入获取 */ const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); rl.on("line", (line) => { console.log(getResult(Number(line))); }); function getResult(num) { ans = [Infinity]; recursive(num, 0, ans); return ans[0]; } function recursive(num, count, ans) { if (num == 1) { ans[0] = Math.min(ans[0], count); return; } if (num % 2 == 0) { recursive(num / 2, count + 1, ans); } else { recursive(num + 1, count + 1, ans); recursive(num - 1, count + 1, ans); } }
Python算法源码
import sys # 输入获取 num = int(input()) def recursive(num, count, ans): if num == 1: ans[0] = min(ans[0], count) return if num % 2 == 0: recursive(num // 2, count + 1, ans) else: recursive(num + 1, count + 1, ans) recursive(num - 1, count + 1, ans) # 算法入口 def getResult(): ans = [sys.maxsize] recursive(num, 0, ans) return ans[0] # 算法调用 print(getResult())
C算法源码
#include <stdio.h> #include <limits.h> #define MIN(a,b) (a) < (b) ? (a) : (b) void recursive(long long num, int count); int ans = INT_MAX; int main() { long long num; scanf("%lld", &num); recursive(num, 0); printf("%d\n", ans); return 0; } void recursive(long long num, int count) { if(num == 1) { ans = MIN(ans, count); return; } if(num % 2 == 0) { recursive(num / 2, count + 1); } else { recursive(num + 1, count + 1); recursive(num - 1, count + 1); } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 4:27:03

神经网络剪枝:优化AI Agent的模型大小

神经网络剪枝&#xff1a;优化AI Agent的模型大小关键词&#xff1a;神经网络剪枝、AI Agent、模型大小优化、稀疏性、计算效率摘要&#xff1a;本文围绕神经网络剪枝技术展开&#xff0c;旨在探讨如何通过该技术优化AI Agent的模型大小。首先介绍了神经网络剪枝的背景&#xf…

作者头像 李华
网站建设 2026/7/7 9:57:27

火山引擎AI大模型生态中Qwen3-32B的应用前景

火山引擎AI大模型生态中Qwen3-32B的应用前景 在当前企业智能化转型的浪潮中&#xff0c;一个现实问题日益凸显&#xff1a;如何在不牺牲性能的前提下&#xff0c;将真正强大的语言模型落地到实际业务系统中&#xff1f;闭源模型如GPT-4能力惊人&#xff0c;但高昂成本和数据不可…

作者头像 李华
网站建设 2026/7/7 12:23:53

Docker数据卷挂载Stable Diffusion 3.5 FP8模型路径最佳实践

Docker数据卷挂载Stable Diffusion 3.5 FP8模型路径最佳实践 在生成式AI应用加速落地的今天&#xff0c;如何高效部署像 Stable Diffusion 这类大型文生图模型&#xff0c;已经成为工程团队面临的核心挑战之一。尤其是当模型迭代到 SD3.5 并引入 FP8 量化技术后&#xff0c;虽然…

作者头像 李华
网站建设 2026/7/7 19:42:27

抖音内容处理新范式:如何高效获取无水印视频与创作者信息

抖音内容处理新范式&#xff1a;如何高效获取无水印视频与创作者信息 【免费下载链接】DouYinBot 抖音无水印下载 项目地址: https://gitcode.com/gh_mirrors/do/DouYinBot 在内容创作和数据分析领域&#xff0c;抖音已成为重要的信息来源。然而&#xff0c;传统下载方式…

作者头像 李华
网站建设 2026/7/7 16:15:02

Notepad++官网下载速度慢?试试HunyuanVideo-Foley配套编辑器插件

Notepad官网下载慢&#xff1f;不如试试这个能跑AI音效的本地化编辑环境 在短视频日更、直播常态化、内容工业化生产的今天&#xff0c;一个常被忽视的问题正困扰着无数创作者&#xff1a;如何让画面和声音真正“同步呼吸”&#xff1f; 想象这样一个场景&#xff1a;你刚剪完一…

作者头像 李华
网站建设 2026/7/6 20:40:19

用Wan2.2-T2V-5B替代传统剪辑?AI视频生成进入实时时代

用Wan2.2-T2V-5B替代传统剪辑&#xff1f;AI视频生成进入实时时代 你有没有遇到过这种情况&#xff1a;凌晨两点&#xff0c;社交媒体运营群里的老板发来一条消息——“明天上午十点前要一条新品宣传短视频&#xff0c;风格要赛博朋克国风融合”。设计师翻了个白眼&#xff0c…

作者头像 李华