汽水瓶

有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是 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. 算法学习【1】三个空汽水瓶可以换一瓶汽水

    开始在牛客网上刷题,遇到的第一题是"换汽水"问题: 有这样一道智力题:"某商店规定:三个空汽水瓶可以换一瓶汽水.小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?&quo ...

  2. OD笔试题-空汽水瓶可以换汽水

    /** * 某商店规定:三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶(但是必须要归还). * 小张手上有n个空汽水瓶,她想知道自己最多可以喝到多少瓶汽水. * 数据范围:输入的正整数满足 1≤n≤ ...

  3. 【算法刷题日记之本手篇】汽水瓶与查找两个字符串a,b中的最长公共子串

    ⭐️前面的话⭐️ 本篇文章介绍来自牛客试题广场的两道题题解,分别为[汽水瓶]和[查找两个字符串a,b中的最长公共子串],展示语言java. 小贴士:本专栏所有题目来自牛客->面试刷题必用工具

  4. c语言汽水瓶换汽水的编程题,c语言:2种方法编程及优化;喝汽水问题

    方法一: 程序: #include int main() { int i=0;//i表示money int j=0;//j表示空瓶子 int sum=0;//sum喝汽水总瓶数 scanf(" ...

  5. CF 990A. Commentary Boxes【数学/模拟】

    [链接]:CF [题意]:对于一个数n,每次加一的代价是a,每次减一的代价是b,求被m整除时的最小代价. [分析]:分情况讨论,自己多举几个栗子. [代码]: #include<cstdio&g ...

  6. 【Java面试题】汽水瓶问题

  7. [每日一题] 0. 每日一题题解汇总

    每日一题 锻炼编程能力,每日尽量至少更新一道算法编程题,其各题目代码已经同步到我的GitHub的Everyday_Coding仓库中:Y-puyu的GitHub仓库,博客内主要更新学习C/C++.Li ...

  8. java递归20元买汽水,瓶盖递归 1块钱买一瓶水,三个瓶盖是换一瓶汽水,问20块钱能买 多少瓶汽水(不能借)...

    瓶盖递归 1块钱买一瓶水,三个瓶盖是换一瓶汽水,问20块钱能买 多少瓶汽水(不能借)package com.ftl; import java.util.Scanner; public class Wa ...

  9. 喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水(编程实现) 学会了让小卖部老板送汽水

    题目:喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水(编程实现) 第一种方法: 思路如下: 实现的代码如下: int main() {     int money = 0;    ...

最新文章

  1. SQL函数Group_concat用法
  2. jakarta ee_Jakarta EE贡献–入门
  3. 宁滨院士生前最后一场学术报告
  4. pyqt5中的lineEdit中只输入数字和字母
  5. mysql存储ip地址_MySQL怎样存储IP地址
  6. HTTP 错误 403.6 - Forbidden 解决方案
  7. 在Tomcat 与weblogic 中的 日志(log4j) 配置系列一
  8. Spark:一个独立应用
  9. c语言数组的概念和指针的加减使用
  10. Altium Designer 打印PCB板元件位置图
  11. 计算机页面偏黄怎么修改,windows10电脑屏幕颜色偏黄的调节方法
  12. (转帖)ConcurrentHashMap实现原理(3)
  13. nexus9刷机全记录
  14. 单域安全评估以及加固方案
  15. 苹果app退款_app退款理由写什么好?苹果退款理由怎么写才好?
  16. 漫画:什么是MapReduce?
  17. pyecharts:日历图实战
  18. 直捣三星老巢,小米携红米Note 5进军韩国市场!
  19. 自制简易矿石收音机暂告失败
  20. 同方服务器系统安装,安徽远教清华同方服务器安装流程

热门文章

  1. linux进入vi编辑报错,Linux Vi编辑器的使用及C编程
  2. Arcgis Javascript那些事儿(七)--AMD详解
  3. MFC 教程【8_MFC的进程和线程 】
  4. vue-transition过渡动画
  5. PVE虚拟服务器配置,我与PVE的交往史 篇一:如何使用虚拟机PVE一步一步打造自己想要的ALL IN ONE 主机...
  6. 判断拐点的条件_专业的交易者如何捕捉振荡区间的双向拐点。上篇
  7. 半导体八大工艺流程图_深度研究——半导体之光刻胶,看五大龙头谁能迈出国产化第一步?...
  8. cache相关命中率的运算_Linux cache命中率查看
  9. linux 可以ping 通 windows ,windows ping 不了 linux
  10. chm 转 html 带索引,chm 的项目文件中包含创建 chm 文件所需的HTML文件信息、目录表文件信息、索引文件信息、窗口属 - 试题答案网问答...