三个瓶盖能换一瓶水,问100个人需要喝水,最少需要买多少瓶水即可解决100人的喝水问题
2016-01-17 20:20
716 查看
1+2 -> 3
1+2+2 -> 6
1+2+2+2 -> 9
….
100个人,3人做一组,共33组,余1人,也即100/3==33, 100%3==1,3瓶水换一瓶,也即一组需要买两瓶(需要有一个作为启动),所以结论很明显了,100/33*2+1=67
以上更多是一种规律、智力的方法;
我们接着使用更为常规的一般的编程手段实现对所需瓶盖的计算:
1+2+2 -> 6
1+2+2+2 -> 9
….
100个人,3人做一组,共33组,余1人,也即100/3==33, 100%3==1,3瓶水换一瓶,也即一组需要买两瓶(需要有一个作为启动),所以结论很明显了,100/33*2+1=67
# python def need(n, b): return int(n/b*(b-1))+n%b
以上更多是一种规律、智力的方法;
我们接着使用更为常规的一般的编程手段实现对所需瓶盖的计算:
int need(int n, int k) { // n: 表示需要喝饮料的人数 // k: 表示多少瓶盖可以换一瓶水 int cnt, drunk, caps = 0, 0, 0; // cnt: 表示买多少瓶水 // drunk: 表示已喝过水的人数 // caps: 当前的瓶盖数 while (drunk < n) { ++cnt; ++drunl; ++caps; if (caps % k == 0) // if(caps == k) { ++drunk; caps = 1; } } return cnt; } int main(int, char**) { std::cout << need(100, 3) << std::endl; // 67 return 0; }
相关文章推荐
- C++和C的相互调用
- 机器学习-支持向量机
- WEB-INFO和META-INFO作用说明
- 计算机面试书籍与求职网站推荐
- TCP的流量控制和拥塞控制
- 前后、左右、去掉所有的空格的正则表达式
- QWidget、QDialog、QMainWindow的异同点
- QWidget、QDialog、QMainWindow的异同点
- Windows下搭建php开发环境
- JAVA SSM 示例代码
- 延迟加载、分页显示等功能的增加
- 动态规划-矩阵链乘法
- typescript[1] 基本类型
- 机器学习-决策树(Entscheidungsbäume)
- js-DOM2,表单脚本
- Hibernate+JPA(转)
- 正向工程configuration配置连接
- WebService学习总结——调用第三方提供的webService服务
- 投入Html5的怀抱,最近在研究的Egret
- 控制器View是如何创建的?