编程题 - 汽水瓶【JavaScript/Node.js解法】
“学如逆水行舟,不进则退。” ——《增广贤文》
目录
- 汽水瓶 题目:
- 解答分析:
- js代码解答 -ACM模式:
- 代码通过:
- 题解分析:
- 简洁思路代码:
汽水瓶 题目:
某商店规定:三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶(但是必须要归还)。
小张手上有 n 个空汽水瓶,她想知道自己最多可以喝到多少瓶汽水。
输入描述:
本题将会给出 1<=T <=10 组测试数据,确切数字未知,您需要一直读入直到特定的结尾。每组测试数据描述如下:在一行上输入一个整数 n (0 <= n <=100) ,代表小张手上的空汽水瓶数量。特别地,n=0 代表输入结束,您只需要立即退出,不需要针对这种情况进行处理。
输出描述:
对于每一组测试数据,新起一行。输出一个整数,代表小张最多可以喝到的汽水数量。
示例1:
输入例子:
3
10
81
0
输出例子:
1
5
40
例子说明:
对于第一组测试数据,共有 3 个空瓶,可以换 1 瓶汽水。可以证明无法再做任何兑换,因此最多可以喝到 1 瓶汽水。
对于第二组测试数据:
- 第一轮兑换,共有 10 个空瓶。可以换 3 瓶汽水,余下 1 个空瓶;
- 第二轮兑换,刚刚余下 1 个空瓶、加上刚刚兑换的 3 瓶汽水喝完,共有 4 个空瓶。可以换 1 瓶汽水,余下 1 个空瓶;
- 第三轮兑换,刚刚余下 1 个空瓶、加上刚刚兑换的 1 瓶汽水喝完、再找老板借 1 个空瓶,共有 3 个空瓶。可以换 1 瓶汽水,余下 0 个空瓶。喝完之后不要忘记归还借的空瓶。
- 综上,一共可以喝到 3+1+1=5 瓶汽水。
解答分析:
可以用来换的瓶子是 总瓶子 / 3 的值,那么现在手里的瓶子就是 没换的瓶子(余数)+ 换来的瓶子。我们进行循环处理直到最后剩下两个瓶子的时候可以借老板一个瓶子,三个瓶子换一瓶汽水,喝完还给老板。而剩下的瓶子小于两瓶的话不做处理。
js代码解答 -ACM模式:
不懂nodejs的readline请点击跳转 – readline模块详解【Node.js】 作者:幸运小圣
const readline = require('readline');const rl = readline.createInterface({input:process.stdin,output:process.stdout,});function calculateBottles(val) {let totalBottles = 0;while (val >= 3) {let newBottles = Math.floor(val / 3);totalBottles += newBottles;val = val % 3 + newBottles;}if(val == 2){totalBottles += 1;}return totalBottles;
}
async function processInput(){for await (const line of rl){let val = Number(line);if(val == 0){break;}if(val > 2){console.log(calculateBottles(val));}rl.close();}
}
processInput();
代码通过:

题解分析:
每次兑换后,都会产生新的空瓶(即喝掉的汽水瓶)。
这些新的空瓶又可以继续兑换,直到空瓶数不足以再兑换为止。
通过观察或数学归纳,我们可以发现一个规律:在允许借瓶的条件下,最多可以喝到的汽水数量大致等于初始空瓶数的一半(当n较大时,这个近似更加准确)。
为什么等于总瓶子除以2:
- 这是因为每次兑换都会“消耗”3个空瓶,但“产生”1瓶汽水(即1个新的空瓶)。
- 从长期来看,每2个空瓶(加上借的1个空瓶)可以“变成”1瓶汽水。
- 因此,在大量兑换的情况下,最多可以喝到的汽水数量趋近于初始空瓶数的一半。
简洁思路代码:
const readline = require('readline');
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });async function processInput () {for await (const line of rl) {let val = Number(line);if (val === 0) {break;}let maxBottles = Math.floor(val / 2);console.log(maxBottles);rl.close();}
}processInput();
相关文章:
编程题 - 汽水瓶【JavaScript/Node.js解法】
“学如逆水行舟,不进则退。” ——《增广贤文》 目录 汽水瓶 题目:解答分析:js代码解答 -ACM模式:代码通过:题解分析:简洁思路代码: 汽水瓶 题目: 某商店规定:三个空…...
从 0 到 1:使用 Docker 部署个人博客系统
引言 在当今数字化时代,拥有一个个人博客来记录自己的学习、生活和见解是一件非常有意义的事情。然而,传统的博客部署方式往往涉及复杂的环境配置和依赖管理,容易让人望而却步。而 Docker 的出现,为我们提供了一种简单、高效的解…...
Python - Python操作Redis
安装Redis可参考 Redis-入门简介-CSDN博客 在Python中接入Redis数据库通常使用redis-py这个库 一、安装Redis 首先,需要安装redis-py库。通过pip来安装 pip install redis 二、连接Redis Redis连接操作import redisdef redis_connect():try:redisClient redi…...
Solidity 开发环境
Solidity 开发环境 Solidity编辑器:Solidity编辑器是⼀种专⻔⽤于编写和编辑Solidity代码的编辑器。常⽤的Solidity编辑器包括 Visual Studio Code、Atom和Sublime Text。以太坊开发环境:以太坊开发环境(Ethereum Development Environment&a…...
js基础案例
1.弹出警告框,显示Hello JS 2.在页面输出内容(内容在body标签里面) 3.在控制台输出内容 4.js代码是自上而下执行 5.将js代码编写到标签的onclick属性中,当点击时,js代码才会执行 6.将js写到超链接的href属性中…...
Unity TMPro显示中文字体
TMP默认的字体只能显示英语,那么怎么显示中文呢 1、找到支持中文的字体文件 在c盘搜索Fonts文件夹有很多支持中文的字体文件 我这里选择雅黑 PS.双击打开发现里面有粗体细体普通三个版本,也可以只导入一个版本进去 2、将其拖入到unity Assets里面 3…...
2025 GDC开发者先锋大会“人形机器人的开源之路”分论坛 | 圆桌会议:《开放协作:开源生态如何解锁人形机器人与具身智能的未来》(上篇)
在GDC全球开发者先锋大会期间,2月23日,由GDC组委会指导、国家地方共建人形机器人创新中心(以下简称“国地中心”)承办的“人形机器人的开源之路”主题论坛在上海西岸艺术中心成功举办。 在人工智能与机器人技术飞速发展的今天&…...
MySQL 数据库安全配置最佳实践
文章目录 MySQL 数据库安全配置最佳实践账户与权限管理账户最小化原则权限最小化配置密码策略强化 认证与访问控制禁用匿名账户启用安全认证 网络安全防护访问源限制禁用远程root访问启用SSL加密 日志审计与监控全量审计配置二进制日志管理 服务端安全加固关键参数配置文件权限…...
网络安全红队工具
目录 红队及发展趋势 基本概念 发展趋势 防守阶段 备战阶段 临战阶段 实战阶段 战后整顿 如果错过互联网,与你擦肩而过的不仅仅是机会,而是整整一个时代。 红队及发展趋势 基本概念 红队一般指实战攻防的防守方。 红队主要复盘总结现有防护系统的不足之处,为…...
【Qt】编程基础
目录 一、Qt体系框架: 编辑二、布局方式: 1.绝对布局 setGeometry()函数 2.盒子布局: QHBoxLayout:水平布局管理器 QVBoxLayout:垂直布局管理器 QGridLayout:网格布局管理器 三、基本控件及其函数 标签类 :QLabel 按…...
《SegFace: Face Segmentation of Long-Tail Classes》论文分享(侵删)
author{Kartik Narayan and Vibashan VS and Vishal M. Patel} 原文链接:[2412.08647] SegFace: Face Segmentation of Long-Tail Classes 摘要 人脸解析是指将人脸语义分割为眼睛、鼻子、头发等关键面部区域。它是各种高级应用程序的先决条件,包括人脸…...
Android AOSP系统裁记录
Android 系统裁剪是指根据需求移除不必要的组件和功能,以优化系统性能、减少存储占用或满足特定设备需求。以下是 Android 系统裁剪的基本步骤: 1. 准备环境 操作系统:推荐使用 Ubuntu 或 macOS。 工具: Android SDK Android N…...
音乐游戏Dance Dance Revolution(DDR)模拟器
文章目录 (一)Dance Dance Revolution(1.1)基本情况(1.2)机体 (二)模拟器(2.1)主程序(2.2)模拟器主题 (三)曲谱…...
Lua的table(表)
Lua表的基本概念 Lua中的表(table)是一种多功能数据结构,可以用作数组、字典、集合等。表是Lua中唯一的数据结构机制,其他数据结构如数组、列表、队列等都可以通过表来实现。 表的实现 Lua的表由两部分组成: 数组部分…...
ZT36 小红和小紫的取素因子游戏
描述 小红和小紫拿到了一个正整数x,她们每次可以选择x的一个因子k(k>1),把x除以k,但要求k必须是素数。小红先手,谁先不能操作谁输。假设两人都足够聪明,最终谁取得胜利? 共进行t次游戏。 输入描述&…...
C# 使用 Newtonsoft.Json 序列化和反序列化对象实例
Newtonsoft.Json(也被称为 Json.NET)是一个广泛使用的用于在 C# 中进行 JSON 序列化和反序列化的开源库。下面将详细介绍如何使用它来序列化和反序列化对象。 1. 安装 Newtonsoft.Json 如果你使用的是 Visual Studio,可以通过 NuGet 包管理…...
用 AI 工具提升 UX/UI 设计效率:从研究到原型
—————————————————— 用 AI 工具提升 UX/UI 设计效率:从研究到原型 开篇引言: 在 UX/UI 设计领域,效率与创意之间的平衡一直是设计师们追求的目标。随着 AI 工具的崛起,设计师们不仅能更快地完成任务,…...
操作系统知识点12
1.在操作系统的结构设计中,采用层次结构的操作系统其最大优点是把整体问题局部化 2.非特权指令是指操作系统和用户均可以使用的指令 3.向处理器发出的中断信号称为中断请求 4.轮转法RR是单纯基于时间片考虑的 5.当进程处于就绪状态时,表示进程已获得…...
FASIONAD:自适应反馈的类人自动驾驶中快速和慢速思维融合系统
24年11月来自清华、早稻田大学、明尼苏达大学、多伦多大学、厦门大学马来西亚分校、电子科大(成都)、智平方科技和河南润泰数字科技的论文“FASIONAD : FAst and Slow FusION Thinking Systems for Human-Like Autonomous Driving with Adaptive Feedbac…...
Redis7——基础篇(八)
前言:此篇文章系本人学习过程中记录下来的笔记,里面难免会有不少欠缺的地方,诚心期待大家多多给予指教。 基础篇: Redis(一)Redis(二)Redis(三)Redis&#x…...
DeepSeek-R1长上下文实战瓶颈突破:从OOM崩溃到98.7%上下文利用率提升的7步调优流程
更多请点击: https://kaifayun.com 第一章:DeepSeek-R1长上下文处理的核心挑战与价值重定义 DeepSeek-R1在支持长达128K tokens的上下文窗口时,并非仅靠简单扩大KV缓存实现,其核心挑战深植于内存带宽瓶颈、注意力计算复杂度爆炸与…...
Android Studio中文界面汉化终极指南:5分钟告别英文困扰
Android Studio中文界面汉化终极指南:5分钟告别英文困扰 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 还在为Androi…...
DeepSeek工具调用能力深度评测(实测12类插件+8种LLM上下文窗口下的成功率与延迟数据)
更多请点击: https://kaifayun.com 第一章:DeepSeek工具调用能力概览与评测方法论 DeepSeek系列大模型(如DeepSeek-V2、DeepSeek-Coder)原生支持结构化工具调用(Tool Calling),其核心机制基于J…...
BilibiliDown:3分钟快速掌握B站视频下载的完整解决方案
BilibiliDown:3分钟快速掌握B站视频下载的完整解决方案 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/…...
【Gemini重大Bug修复公告】:20年Google AI架构师亲述3个致命漏洞及72小时紧急修复全过程
更多请点击: https://intelliparadigm.com 第一章:Gemini重大Bug修复公告 近日,Google 工程团队紧急发布 Gemini API v0.5.3 补丁版本,修复了一个影响多模态推理一致性的高危竞态条件(Race Condition)Bug。…...
渗透测试学习路线:从原生终端到实战靶场的系统路径
1. 这不是“速成课”,而是一张你真正能踩出脚印的地图很多人点开“渗透测试学习路线”时,心里想的是:学三个月能不能接单?能不能进红队?能不能年薪30万?我试过在2019年用两周时间刷完某平台全部CTF入门题&a…...
面试官最爱问的“反转字符串”,为什么能看出你是不是高手?
面试官最爱问的“反转字符串”,为什么能看出你是不是高手? 很多人第一次看到“反转字符串(Reverse String)”这道题时,都会有一种感觉: 就这? 不就是把 "hello" 变成 "olleh" 吗? 结果真正面试时。 有人写了 3 行。 有人写了 30 行。 还有人直…...
20+专业图标库免费获取:Inkscape Open Symbols让你的设计效率提升300%
20专业图标库免费获取:Inkscape Open Symbols让你的设计效率提升300% 【免费下载链接】inkscape-open-symbols Open source SVG symbol sets that can be used as Inkscape symbols 项目地址: https://gitcode.com/gh_mirrors/in/inkscape-open-symbols 还在…...
硬件-软件协同设计:原理、优化与应用实践
1. 硬件-软件协同设计的本质与挑战现代科学仪器正变得越来越复杂,特别是在基础物理和相关领域。想象一下,你正在设计一台粒子探测器或天体物理观测站,这不仅仅是一堆硬件零件的简单组装,而是一个由传感器、电子设备、冷却系统、触…...
英雄联盟终极自动化工具:5分钟快速上手League Akari完整指南
英雄联盟终极自动化工具:5分钟快速上手League Akari完整指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 还在为繁琐的游戏操作…...
