喝汽水问题(c语言)

喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水,这里用c语言来解释

可以先用列举法来说明,¥20可以买20个汽水,两个空瓶换一瓶就可以获得10个汽水,同理10个空瓶个可以获得五瓶,五个换两个两个换一个,然后用五个的余数加上两个的余数相加,可得39瓶。但是这个是用硬算的方法去得出的。我们要做的是,输入n瓶,就可以得出喝了几瓶。

分析

我认为这题看上去简单,但实际上还是有一定的思考难度的,本体秩序是两个变量,就是喝过的汽水和空瓶,利用钱数先来给定这个空瓶数和喝过的值,因为都是¥1一瓶,所以钱数就等于这些数,然后喝过的数随着每一次的这个兑换,他应该是要等于之前我喝过的数,再加上所有的空瓶子数再是÷2,这题难就难在空瓶数该如何表示空瓶数就应该等于空瓶数÷2,再加上空瓶%2,因为有些情况会存在余

原码

#include <stdio.h>

int main()

{

int money = 0;

int he = 0;

int kong = 0;

while (scanf_s("%d", &money) != EOF)

{

he = money;

kong = money;

while (kong > 1)

{

he = he + kong / 2;

kong = kong / 2 + kong % 2;

}

printf("你可以喝%d瓶", he);

}

return 0;

}

相关推荐
Hello.Reader1 分钟前
深入理解 Rust 的 `Rc<T>`:实现多所有权的智能指针
开发语言·后端·rust
程序员阿鹏4 分钟前
jdbc批量插入数据到MySQL
java·开发语言·数据库·mysql·intellij-idea
yoona10204 分钟前
Rust编程语言入门教程(八)所有权 Stack vs Heap
开发语言·后端·rust·区块链·学习方法
莲动渔舟5 分钟前
国产编辑器EverEdit - 在编辑器中对文本进行排序
java·开发语言·编辑器
微刻时光18 分钟前
影刀RPA中级证书-Excel进阶-开票清单
经验分享·python·低代码·rpa·影刀·影刀证书·影刀实战
Baklib-企业帮助文档32 分钟前
知识库管理中台架构:数据资产激活与企业效率跃升
其他
滴_咕噜咕噜40 分钟前
C#基础总结:常用的数据结构
开发语言·数据结构·c#
martian66540 分钟前
【Java高级篇】——第16篇:高性能Java应用优化与调优
java·开发语言·jvm
许苑向上1 小时前
Java八股文(下)
java·开发语言
谏君之1 小时前
C语言实现的常见算法示例
c语言·算法·排序算法