JSK-337 汽水瓶【数学+模拟】
汽水瓶
有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是 5 瓶,方法如下:先用 9 个空瓶子换 3 瓶汽水,喝掉 3 瓶满的,喝完以后 4 个空瓶子,用 3 个再换一瓶,喝掉这瓶满的,这时候剩 2 个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用 3 个空瓶子换一瓶满的还给老板。如果小张手上有 n 个空汽水瓶,最多可以换多少瓶汽水喝?
输入格式
输入文件最多包含 10 组测试数据,每个数据占一行,仅包含一个正整数 n(1≤n≤100),表示小张手上的空汽水瓶数。n=0 表示输入结束,你的程序不应当处理这一行。
输出格式
对于每组测试数据,输出一行,表示最多可以喝的汽水瓶数。如果一瓶也喝不到,输出 0。
样例输入
3
10
81
0
样例输出
1
5
40
问题链接:JSK-337 汽水瓶
问题简述:(略)
问题分析:
喝汽水,每3个空瓶可以换一瓶汽水,可以采用迭代计算问题,也就是模拟喝汽水的过程。
如果最后剩下2瓶则可以换一瓶。喝掉这2瓶再从朋友那里借一个空瓶,3个空瓶换一瓶,喝了之后,将空瓶还给朋友。
既然2瓶可以喝3瓶,那直接用数学公式算就可以了,时间复杂度为O(1)。列出的公式是(n / 2 )* 3 + n % 2 - n = n / 2,式子中的计算为程序中的整数运算。
程序说明:
这个题可以说与参考链接是同一个题,只是问题描述、求的结果和输入数据格式略有不同。
第1个程序中的不论是用第9行还是用第10行进行计算输出,结果都是一样的,只是第9行没有经过数学推导要好懂一些。
参考链接:UVA11150 Cola【数学+模拟】
题记:用程序解决现实世界的问题时,有两种策略,一是先用数学方法处理然后编程解决;二是直接编程解决。
AC的C语言程序(数学)如下:
/* JSK-337 汽水瓶 */#include <stdio.h>int main()
{int n;while(~scanf("%d", &n) && n)/* printf("%d\n", (n / 2 )* 3 + n % 2 - n); */printf("%d\n", n / 2);return 0;
}
AC的C语言程序(模拟)如下:
/* JSK-337 汽水瓶 */#include <stdio.h>int main()
{int n, ans;while(~scanf("%d", &n) && n) {ans = 0;while(n >= 3) {ans += n / 3;n = n / 3 + n % 3;}if(n == 2)ans++;printf("%d\n", ans);}return 0;
}
JSK-337 汽水瓶【数学+模拟】相关推荐
- 算法学习【1】三个空汽水瓶可以换一瓶汽水
开始在牛客网上刷题,遇到的第一题是"换汽水"问题: 有这样一道智力题:"某商店规定:三个空汽水瓶可以换一瓶汽水.小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?&quo ...
- OD笔试题-空汽水瓶可以换汽水
/** * 某商店规定:三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶(但是必须要归还). * 小张手上有n个空汽水瓶,她想知道自己最多可以喝到多少瓶汽水. * 数据范围:输入的正整数满足 1≤n≤ ...
- 【算法刷题日记之本手篇】汽水瓶与查找两个字符串a,b中的最长公共子串
⭐️前面的话⭐️ 本篇文章介绍来自牛客试题广场的两道题题解,分别为[汽水瓶]和[查找两个字符串a,b中的最长公共子串],展示语言java. 小贴士:本专栏所有题目来自牛客->面试刷题必用工具
- c语言汽水瓶换汽水的编程题,c语言:2种方法编程及优化;喝汽水问题
方法一: 程序: #include int main() { int i=0;//i表示money int j=0;//j表示空瓶子 int sum=0;//sum喝汽水总瓶数 scanf(" ...
- CF 990A. Commentary Boxes【数学/模拟】
[链接]:CF [题意]:对于一个数n,每次加一的代价是a,每次减一的代价是b,求被m整除时的最小代价. [分析]:分情况讨论,自己多举几个栗子. [代码]: #include<cstdio&g ...
- 【Java面试题】汽水瓶问题
- [每日一题] 0. 每日一题题解汇总
每日一题 锻炼编程能力,每日尽量至少更新一道算法编程题,其各题目代码已经同步到我的GitHub的Everyday_Coding仓库中:Y-puyu的GitHub仓库,博客内主要更新学习C/C++.Li ...
- java递归20元买汽水,瓶盖递归 1块钱买一瓶水,三个瓶盖是换一瓶汽水,问20块钱能买 多少瓶汽水(不能借)...
瓶盖递归 1块钱买一瓶水,三个瓶盖是换一瓶汽水,问20块钱能买 多少瓶汽水(不能借)package com.ftl; import java.util.Scanner; public class Wa ...
- 喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水(编程实现) 学会了让小卖部老板送汽水
题目:喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水(编程实现) 第一种方法: 思路如下: 实现的代码如下: int main() { int money = 0; ...
最新文章
- SQL函数Group_concat用法
- jakarta ee_Jakarta EE贡献–入门
- 宁滨院士生前最后一场学术报告
- pyqt5中的lineEdit中只输入数字和字母
- mysql存储ip地址_MySQL怎样存储IP地址
- HTTP 错误 403.6 - Forbidden 解决方案
- 在Tomcat 与weblogic 中的 日志(log4j) 配置系列一
- Spark:一个独立应用
- c语言数组的概念和指针的加减使用
- Altium Designer 打印PCB板元件位置图
- 计算机页面偏黄怎么修改,windows10电脑屏幕颜色偏黄的调节方法
- (转帖)ConcurrentHashMap实现原理(3)
- nexus9刷机全记录
- 单域安全评估以及加固方案
- 苹果app退款_app退款理由写什么好?苹果退款理由怎么写才好?
- 漫画:什么是MapReduce?
- pyecharts:日历图实战
- 直捣三星老巢,小米携红米Note 5进军韩国市场!
- 自制简易矿石收音机暂告失败
- 同方服务器系统安装,安徽远教清华同方服务器安装流程
热门文章
- linux进入vi编辑报错,Linux Vi编辑器的使用及C编程
- Arcgis Javascript那些事儿(七)--AMD详解
- MFC 教程【8_MFC的进程和线程 】
- vue-transition过渡动画
- PVE虚拟服务器配置,我与PVE的交往史 篇一:如何使用虚拟机PVE一步一步打造自己想要的ALL IN ONE 主机...
- 判断拐点的条件_专业的交易者如何捕捉振荡区间的双向拐点。上篇
- 半导体八大工艺流程图_深度研究——半导体之光刻胶,看五大龙头谁能迈出国产化第一步?...
- cache相关命中率的运算_Linux cache命中率查看
- linux 可以ping 通 windows ,windows ping 不了 linux
- chm 转 html 带索引,chm 的项目文件中包含创建 chm 文件所需的HTML文件信息、目录表文件信息、索引文件信息、窗口属 - 试题答案网问答...