[蓝桥杯 2015 省 A] 饮料换购

题目链接

[蓝桥杯 2015 省 A] 饮料换购

题目描述

乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊 C C C 型饮料,凭 3 3 3 个瓶盖可以再换一瓶 C C C 型饮料,并且可以一直循环下去(但不允许暂借或赊账)。

请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的 n n n 瓶饮料,最后他一共能喝到多少瓶饮料。

输入格式

一个整数 n n n,表示开始购买的饮料数量。

输出格式

一个整数,表示实际得到的饮料数。

输入输出样例
输入

100

输出

149

输入

101

输出

151

数据范围
  • 0 ≤ n ≤ 10000 0 \leq n \leq 10000 0n10000

解法:模拟

由于 3 3 3 个瓶盖可以换 1 1 1 瓶饮料,那么对于 n n n 瓶饮料,我们直接将其转换为 n × 3 n \times 3 n×3 个瓶盖。

我们令 m = n × 3 m = n \times 3 m=n×3

我们可以换到的饮料瓶数为 t = ⌊ m 3 ⌋ t = \lfloor \frac{m}{3} \rfloor t=3m。此时我们直接累加到答案 a n s ans ans 中。

由于我们换到了 t t t 瓶饮料,所以我们消耗掉了 t × 3 t \times 3 t×3 个瓶盖,需要用总的瓶盖数减去消耗掉的瓶盖数,即 m = m − t × 3 m = m - t \times 3 m=mt×3

由于我们获得了 t t t 瓶饮料,所以还要加上 t t t 个瓶盖数。

所以最终 m = m − t × 3 + t m = m - t \times 3 + t m=mt×3+t

只要 m ≥ 3 m \geq 3 m3,就要一直循环模拟这个过程,直到换掉所有饮料。

时间复杂度 : O ( l o g n ) O(logn) O(logn)

C++代码:

#include <iostream>
#include <cstring>using namespace std;
using LL = long long;void solve(){int n;cin>>n;n *= 3;int ans = 0;while(n >= 3){int t = n / 3;ans += t;n -= (t * 3);n += t;}cout<<ans<<'\n';
}int main(){int t = 1;while(t--){solve();}return 0;
}

Java代码:

import java.util.*;
import java.io.*;public class Main{static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));public static void main(String[] args) throws Exception {int n = Integer.parseInt(in.readLine().trim());n *= 3;int ans = 0;while(n >= 3) {int t = n / 3;ans += t;n -= (t * 3);n += t;}System.out.println(ans);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/751480.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Redis知识点总结】(四)——如何保证缓存与数据库中的数据一致性

Redis知识点总结&#xff08;四&#xff09;——如何保证缓存与数据库中的数据一致性 更新缓存删除缓存先删除缓存后更新数据库先更新数据库后删除缓存 使用canal总结 面试会经常遇到这种问题&#xff1a;你们如何保证缓存与数据库中的数据一致性&#xff1f;或者是&#xff1a…

*波动数列c++

题目 输入样例&#xff1a; 4 10 2 3输出样例&#xff1a; 2样例解释 两个满足条件的数列分别是2 4 1 3和7 4 1 -2。 思路 上来先理解题意&#xff0c;本题求的是“长度为n 总和为s的……数列的数目”。 假设第一项为x&#xff0c;增加 a 或者减少 b用di表示&#xff0c;…

【Spring Boot 源码学习】深入应用上下文初始化器实现

《Spring Boot 源码学习系列》 深入应用上下文初始化器实现 一、引言二、往期内容三、主要内容3.1 spring-boot 子模块中内置的实现类3.1.1 ConfigurationWarningsApplicationContextInitializer3.1.2 ContextIdApplicationContextInitializer3.1.3 DelegatingApplicationConte…

【智能算法】斑鬣狗优化算法(SHO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过。 3.代码实现4.参考文献 1.背景 2017年&#xff0c;Dhiman等人受到斑鬣狗自然狩猎行为启发&#xff0c;提出了斑鬣狗优化算法(Spotted Hyena Optimizer, SHO)。 2.算法原理 2.1算法思想 SHO将斑鬣狗狩猎行为分为围捕-狩猎-进攻三…

Python入门(三)

序列 序列是有顺序的数据集合。序列包含的一个数据被称为元素&#xff0c;序列可以由一个或多个元素组成&#xff0c;也是可以没有任何元素的空序列。 序列的类型 元组&#xff08;定值表&#xff09;&#xff1a;一旦建立&#xff0c;各个元素不可再更变&#xff0c;所以一…

python-0008-修改django数据库为mysql

操作系统 centos7 执行 在虚拟环境中执行&#xff1a; pip3 install mysqlclient2.2.4 -i https://mirrors.aliyun.com/pypi/simple无法安装问题 如果安装mysqlclient时提示找不到对应的版本&#xff0c;或者编译失败&#xff0c;请退出虚拟环境&#xff0c;执行以下操作&…

2024华为春招Django面试题大全,最全知识点揭秘,面试必备!

为了帮助广大求职者更好地准备即将到来的面试&#xff0c;本文精心编撰了一系列涵盖InnoDB存储引擎关键知识点的面试题。这些问题不仅覆盖了InnoDB的基础知识&#xff0c;如其ACID特性、索引设计、锁机制等&#xff0c;还涵盖了性能优化、备份恢复策略等高级话题&#xff0c;旨…

【Spring Boot 3】【JSON】读取JSON文件

【Spring Boot 3】【JSON】读取JSON文件 背景介绍开发环境开发步骤及源码工程目录结构总结背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术总是要花…

简单函数_短信计费

任务描述 用手机发短信&#xff0c;一条短信资费为0.1元&#xff0c;但限定一条短信的内容在70个字以内&#xff08;包括70个字&#xff09;。如果你一次所发送的短信超过了70个字&#xff0c;则会按照每70个字一条短信的限制把它分割成多条短信发送。假设已经知道你当月所发送…

Wireshark抓包工具的使用

提示&#xff1a;本文为学习记录&#xff0c;若有错误&#xff0c;请联系作者&#xff0c;谦虚受教 文章目录 前言一、下载二、首页三、使用1.读入数据2.分析数据3.筛选IP4.保存数据 四、过滤器表达式五、TCP总结 前言 低头做事&#xff0c;抬头看路。 一、下载 下载路径wire…

【论文笔记合集】LSTNet之循环跳跃连接

本文作者&#xff1a; slience_me LSTNet 循环跳跃连接 文章仅作为个人笔记 论文链接 文章原文 LSTNet [25] introduces convolutional neural networks (CNNs) with recurrent-skip connections to capture the short-term and long-term temporal patterns. LSTNet [25]引入…

【Java刷题篇】串联所有单词的子串

这里写目录标题 &#x1f4c3;1.题目&#x1f4dc;2.分析题目&#x1f4dc;3.算法原理&#x1f9e0;4.思路叙述✍1.进窗口✍2.判断有效个数✍3.维护窗口✍4.出窗口 &#x1f4a5;5.完整代码 &#x1f4c3;1.题目 力扣链接: 串联所有单词的子串 &#x1f4dc;2.分析题目 阅…

口腔管理平台 |基于springboot框架+ Mysql+Java+B/S结构的口腔管理平台 设计与实现(可运行源码+数据库+lw文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 管理员功能登录前台功能效果图 会员功能 系统功能设计 数据库E-R图设计 lunwen参考…

智慧公厕建设的主要目标是什么?

随着城市化进程的不断推进&#xff0c;公共厕所作为城市基础设施的重要组成部分&#xff0c;也变得越来越重要。为了提升公共厕所的管理水平、提供更好的服务质量&#xff0c;智慧公厕应运而生。智慧公厕的建设旨在通过信息化手段实现公共厕所的全面感知监测&#xff0c;实现公…

remix Gas estimation failed,Remix中合约编译后的ABI以及bytecode位置,Remix中合约编译后的怎么测试

目录 remix Gas estimation failed Remix中合约编译后的ABI以及bytecode位置 Remix中合约编译后的怎么测试 remix Gas estimation failed 很有可能是你的solidity版本问题,重新复制我下编的,进行部署;

【Linux笔记-使用指南-备忘录】

虚拟机使用指南 创建虚拟机Linux使用指南yumJDKDockerLinux常用指令 RedisRedis配置key相关指令String相关指令待续... 创建虚拟机 点击我创建虚拟机 Linux使用指南 yum # 更新yum包 sudo yum update -y# 加入安装过旧版本&#xff0c;先卸载旧版本 sudo yum remove docker…

redis的基本知识点

连接Redis 在进行Redis操作之前&#xff0c;首先需要连接到Redis服务器。这可以通过使用redis-cli命令实现&#xff0c;具体命令格式如下&#xff1a; redis-cli -h <host> -p <port>其中&#xff0c;是Redis服务器的主机名或IP地址&#xff0c;是Redis服务器的端…

C语言自定义数据类型:用typedef声明新类型名

参考原文链接&#xff1a;https://blog.csdn.net/qq_57342311/article/details/129616215 除了可以直接使用 C 提供的标准类型名(如 int&#xff0c;char&#xff0c;float, double 和 long 等)和程序编写者自己声明的结构体、共用体、枚举类型外&#xff0c;还可以用 typedef …

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:FormLink)

提供静态卡片交互组件&#xff0c;用于静态卡片内部和提供方应用间的交互&#xff0c;当前支持router、message和call三种类型的事件。 说明&#xff1a; 该组件从API Version 10开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 该组件仅可…

6.【Linux】进程间通信(管道命名管道||简易进程池||简易客户端服务端通信)

介绍 进程间通信的方式 1.Linux原生支持的管道----匿名和命名管道 2.System V-----共享内存、消息队列、信号量 3.Posix------多线程、网路通信 进程间通信目的 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程 资源共享&#xff1a;多个进程之间共享同样的资源。…