当前位置:网站首页>C语言:汽水瓶详解
C语言:汽水瓶详解
2022-08-09 07:27:00 【高邮吴少】
题目链接:汽水瓶
#include<stdio.h>
int main()
{
//多组输入
int n = 0;
while ((scanf("%d", &n) != EOF))
{
if (n == 0)
{
return 0;
}
else {
int count = 0;//计数器
int dh = 0;//兑换得到的汽水
while (((n + 1) / 3) != 0)//(n+1)/3!=0说明还可以兑换
{
if (n != 2)//不是借了1瓶换的
{
dh = n / 3;
//如果空瓶数n正好是3的倍数,就不用借了
//如果空瓶书n差1个是3的倍数,可以借一个
n = dh + n % 3;//兑换前剩下的汽水+兑换得到的汽水=新的空瓶数
count += dh;
dh = 0;
}
else//最后剩下2个空瓶,借一个换一个,最后还回去空瓶
{
count++;
break;
}
}
printf("%d\n", count);
}
}
return 0;
}
该题有一个容易让人误解的地方,就是“借一瓶”这个借一瓶不是什么时候都可以借的。
比如你现在29空瓶,它题目虽说是可以借一空瓶,好像就30个空瓶了,然后你一下子兑换10个。
其实不是这样的。它是要求你先用29个空瓶换9个,然后剩余2+9个空瓶,再进行兑换得到3瓶。
3瓶喝完,剩余2+3个空瓶,再进行兑换得到1瓶。
1瓶喝完,剩余2+1个空瓶,再进行兑换得到1瓶。
1瓶再借1瓶也不够兑换,循环结束。示意图如下:
这个借一瓶进行兑换是发生在最后你剩余2空瓶的情况,
你借1空瓶来凑个3空瓶,然后正好换1个,喝完把空瓶还回去。
其他情况,是不允许借的,这也是这个题目比较坑的地方,容易被绕进去。
边栏推荐
猜你喜欢
随机推荐
排序第一节——插入排序(直接插入排序+希尔排序)(视频讲解26分钟)
当酷雷曼VR直播遇上视频号,会摩擦出怎样的火花?
jmeter并发数量以及压力机的一些限制
【修电脑】系统重装但IP不变后VScode Remote SSH连接失败解决
【ROS2原理8】节点到参与者的重映射
stm32定时器之简单封装
【机器学习】降维代码练习
【报错】Root Cause com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
failed (13: Permission denied) while connecting to upstream
排序第三节——交换排序(冒泡排序+快速排序+快排的优化)(5个视频讲解)
软件测试的岗位会越来越少吗?
tianqf的解题思路
Sklearn data preprocessing
训练好的深度学习模型,多种部署方式
【MySQL】update mysql.user set authentication_string=password(“123456“) where User=‘root‘; 报错
MUI无法滚动?完美解决
way of thinking problem-solving skills
web自动化测试有哪些工具和框架?
list and string conversion
类和结构体