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

编程题 - 汽水瓶【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解法】

‌“学如逆水行舟&#xff0c;不进则退。”‌ ——《增广贤文》 目录 汽水瓶 题目&#xff1a;解答分析&#xff1a;js代码解答 -ACM模式&#xff1a;代码通过&#xff1a;题解分析&#xff1a;简洁思路代码&#xff1a; 汽水瓶 题目&#xff1a; 某商店规定&#xff1a;三个空…...

从 0 到 1:使用 Docker 部署个人博客系统

引言 在当今数字化时代&#xff0c;拥有一个个人博客来记录自己的学习、生活和见解是一件非常有意义的事情。然而&#xff0c;传统的博客部署方式往往涉及复杂的环境配置和依赖管理&#xff0c;容易让人望而却步。而 Docker 的出现&#xff0c;为我们提供了一种简单、高效的解…...

Python - Python操作Redis

安装Redis可参考 Redis-入门简介-CSDN博客 在Python中接入Redis数据库通常使用redis-py这个库 一、安装Redis 首先&#xff0c;需要安装redis-py库。通过pip来安装 pip install redis 二、连接Redis Redis连接操作import redisdef redis_connect():try:redisClient redi…...

Solidity 开发环境

Solidity 开发环境 Solidity编辑器&#xff1a;Solidity编辑器是⼀种专⻔⽤于编写和编辑Solidity代码的编辑器。常⽤的Solidity编辑器包括 Visual Studio Code、Atom和Sublime Text。以太坊开发环境&#xff1a;以太坊开发环境&#xff08;Ethereum Development Environment&a…...

js基础案例

1.弹出警告框&#xff0c;显示Hello JS 2.在页面输出内容&#xff08;内容在body标签里面&#xff09; 3.在控制台输出内容 4.js代码是自上而下执行 5.将js代码编写到标签的onclick属性中&#xff0c;当点击时&#xff0c;js代码才会执行 6.将js写到超链接的href属性中&#xf…...

Unity TMPro显示中文字体

TMP默认的字体只能显示英语&#xff0c;那么怎么显示中文呢 1、找到支持中文的字体文件 在c盘搜索Fonts文件夹有很多支持中文的字体文件 我这里选择雅黑 PS.双击打开发现里面有粗体细体普通三个版本&#xff0c;也可以只导入一个版本进去 2、将其拖入到unity Assets里面 3…...

2025 GDC开发者先锋大会“人形机器人的开源之路”分论坛 | 圆桌会议:《开放协作:开源生态如何解锁人形机器人与具身智能的未来》(上篇)

在GDC全球开发者先锋大会期间&#xff0c;2月23日&#xff0c;由GDC组委会指导、国家地方共建人形机器人创新中心&#xff08;以下简称“国地中心”&#xff09;承办的“人形机器人的开源之路”主题论坛在上海西岸艺术中心成功举办。 在人工智能与机器人技术飞速发展的今天&…...

MySQL 数据库安全配置最佳实践

文章目录 MySQL 数据库安全配置最佳实践账户与权限管理账户最小化原则权限最小化配置密码策略强化 认证与访问控制禁用匿名账户启用安全认证 网络安全防护访问源限制禁用远程root访问启用SSL加密 日志审计与监控全量审计配置二进制日志管理 服务端安全加固关键参数配置文件权限…...

网络安全红队工具

目录 红队及发展趋势 基本概念 发展趋势 防守阶段 备战阶段 临战阶段 实战阶段 战后整顿 如果错过互联网,与你擦肩而过的不仅仅是机会,而是整整一个时代。 红队及发展趋势 基本概念 红队一般指实战攻防的防守方。 红队主要复盘总结现有防护系统的不足之处&#xff0c;为…...

【Qt】编程基础

目录 一、Qt体系框架&#xff1a; ​编辑二、布局方式&#xff1a; 1.绝对布局 setGeometry()函数 2.盒子布局&#xff1a; QHBoxLayout:水平布局管理器 QVBoxLayout:垂直布局管理器 QGridLayout:网格布局管理器 三、基本控件及其函数 标签类 &#xff1a;QLabel 按…...

《SegFace: Face Segmentation of Long-Tail Classes》论文分享(侵删)

author{Kartik Narayan and Vibashan VS and Vishal M. Patel} 原文链接&#xff1a;[2412.08647] SegFace: Face Segmentation of Long-Tail Classes 摘要 人脸解析是指将人脸语义分割为眼睛、鼻子、头发等关键面部区域。它是各种高级应用程序的先决条件&#xff0c;包括人脸…...

Android AOSP系统裁记录

Android 系统裁剪是指根据需求移除不必要的组件和功能&#xff0c;以优化系统性能、减少存储占用或满足特定设备需求。以下是 Android 系统裁剪的基本步骤&#xff1a; 1. 准备环境 操作系统&#xff1a;推荐使用 Ubuntu 或 macOS。 工具&#xff1a; Android SDK Android N…...

音乐游戏Dance Dance Revolution(DDR)模拟器

文章目录 &#xff08;一&#xff09;Dance Dance Revolution&#xff08;1.1&#xff09;基本情况&#xff08;1.2&#xff09;机体 &#xff08;二&#xff09;模拟器&#xff08;2.1&#xff09;主程序&#xff08;2.2&#xff09;模拟器主题 &#xff08;三&#xff09;曲谱…...

Lua的table(表)

Lua表的基本概念 Lua中的表&#xff08;table&#xff09;是一种多功能数据结构&#xff0c;可以用作数组、字典、集合等。表是Lua中唯一的数据结构机制&#xff0c;其他数据结构如数组、列表、队列等都可以通过表来实现。 表的实现 Lua的表由两部分组成&#xff1a; 数组部分…...

ZT36 小红和小紫的取素因子游戏

描述 小红和小紫拿到了一个正整数x&#xff0c;她们每次可以选择x的一个因子k(k>1)&#xff0c;把x除以k&#xff0c;但要求k必须是素数。小红先手&#xff0c;谁先不能操作谁输。假设两人都足够聪明&#xff0c;最终谁取得胜利&#xff1f; 共进行t次游戏。 输入描述&…...

C# 使用 Newtonsoft.Json 序列化和反序列化对象实例

Newtonsoft.Json&#xff08;也被称为 Json.NET&#xff09;是一个广泛使用的用于在 C# 中进行 JSON 序列化和反序列化的开源库。下面将详细介绍如何使用它来序列化和反序列化对象。 1. 安装 Newtonsoft.Json 如果你使用的是 Visual Studio&#xff0c;可以通过 NuGet 包管理…...

用 AI 工具提升 UX/UI 设计效率:从研究到原型

—————————————————— 用 AI 工具提升 UX/UI 设计效率&#xff1a;从研究到原型 开篇引言&#xff1a; 在 UX/UI 设计领域&#xff0c;效率与创意之间的平衡一直是设计师们追求的目标。随着 AI 工具的崛起&#xff0c;设计师们不仅能更快地完成任务&#xff0c…...

操作系统知识点12

1.在操作系统的结构设计中&#xff0c;采用层次结构的操作系统其最大优点是把整体问题局部化 2.非特权指令是指操作系统和用户均可以使用的指令 3.向处理器发出的中断信号称为中断请求 4.轮转法RR是单纯基于时间片考虑的 5.当进程处于就绪状态时&#xff0c;表示进程已获得…...

FASIONAD:自适应反馈的类人自动驾驶中快速和慢速思维融合系统

24年11月来自清华、早稻田大学、明尼苏达大学、多伦多大学、厦门大学马来西亚分校、电子科大&#xff08;成都&#xff09;、智平方科技和河南润泰数字科技的论文“FASIONAD : FAst and Slow FusION Thinking Systems for Human-Like Autonomous Driving with Adaptive Feedbac…...

Redis7——基础篇(八)

前言&#xff1a;此篇文章系本人学习过程中记录下来的笔记&#xff0c;里面难免会有不少欠缺的地方&#xff0c;诚心期待大家多多给予指教。 基础篇&#xff1a; Redis&#xff08;一&#xff09;Redis&#xff08;二&#xff09;Redis&#xff08;三&#xff09;Redis&#x…...

G-Helper终极指南:如何让你的华硕笔记本性能翻倍,告别臃肿控制软件

G-Helper终极指南&#xff1a;如何让你的华硕笔记本性能翻倍&#xff0c;告别臃肿控制软件 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyru…...

rabbitmq新手福音,快马ai生成带详解注释的入门代码,轻松理解消息队列

RabbitMQ新手入门&#xff1a;从零开始理解消息队列 最近在学习消息队列技术&#xff0c;发现RabbitMQ作为最流行的开源消息代理之一&#xff0c;对于新手来说概念确实有点抽象。不过通过InsCode(快马)平台的帮助&#xff0c;我很快就能上手实践了。下面分享我的学习过程&…...

如何在Windows系统中轻松访问Linux分区?Ext2Read的5个实用技巧

如何在Windows系统中轻松访问Linux分区&#xff1f;Ext2Read的5个实用技巧 【免费下载链接】ext2read A Windows Application to read and copy Ext2/Ext3/Ext4 (With LVM) Partitions from Windows. 项目地址: https://gitcode.com/gh_mirrors/ex/ext2read 你是否曾经在…...

从像素大陆到现实世界:Pixel Epic生成的研报被期刊录用的真实案例

从像素大陆到现实世界&#xff1a;Pixel Epic生成的研报被期刊录用的真实案例 1. 当游戏化AI遇见学术研究 在科研领域&#xff0c;撰写高质量研究报告一直是项耗时费力的工作。传统AI辅助工具虽然能提高效率&#xff0c;但往往缺乏创意和趣味性。Pixel Epic的出现改变了这一现…...

计算机应届生:简历好看≠能过面试

文章目录 前言一、简历"P图"&#xff1a;美颜开过头&#xff0c;见面就翻车二、面试的"黑盒"&#xff1a;你以为在考八股文&#xff0c;其实在考思维模型三、项目经历的"坑"&#xff1a;你的秒杀系统&#xff0c;可能只是个Hello World四、技术深…...

2026网文圈变天!顶配AI写小说神器实测:除了炼字工坊,全是虚火?

搞了半个月实测&#xff0c;废了三个起点号&#xff0c;我终于把这套2026网文顶配AI组合拳盘清楚了。 说实话&#xff0c;现在市面上打着“AI写小说”旗号的工具&#xff0c;90%都是割韭菜的套壳货。 点开一看&#xff0c;全是GPT-4o或者过时的模型&#xff0c;写出来的东西一股…...

Qwen3-TTS开源大模型实操:批量处理CSV文本并生成多语种MP3音频的Python脚本

Qwen3-TTS开源大模型实操&#xff1a;批量处理CSV文本并生成多语种MP3音频的Python脚本 1. 为什么你需要这个脚本&#xff1a;从手动点选到全自动批量合成 你有没有试过用Qwen3-TTS WebUI生成几十条产品介绍语音&#xff1f;每次打开页面、粘贴文本、选语言、点生成、等加载、…...

WINDOWS11 + VS2022 下.NET 4.0兼容性问题的终极解决方案

1. 为什么Windows11VS2022需要特殊处理.NET 4.0&#xff1f; 最近在帮团队迁移老项目时&#xff0c;发现一个让人头疼的问题&#xff1a;用VS2022打开十年前基于.NET 4.0的项目时&#xff0c;编译器疯狂报错。明明系统已经装了.NET 4.0运行时&#xff0c;为什么还会出现这种情…...

mPLUG-Owl3-2B多模态交互:本地运行、保护隐私的AI识图方案

mPLUG-Owl3-2B多模态交互&#xff1a;本地运行、保护隐私的AI识图方案 1. 引言&#xff1a;为什么选择本地多模态AI 想象一下&#xff0c;当你看到一张有趣的图片&#xff0c;想了解其中的内容时&#xff0c;不再需要将图片上传到云端服务器&#xff0c;而是直接在本地电脑上…...

3分钟快速上手:使用res-downloader实现全网资源一键捕获与下载

3分钟快速上手&#xff1a;使用res-downloader实现全网资源一键捕获与下载 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 想…...