【C/C++题目】1 元钱一瓶汽水,喝完后两个空瓶换一瓶汽水,问:你有 20 元钱,最多可以喝到几瓶汽水?(可以借但要有借有还)

链接地址:【C/C++题目】1 元钱一瓶汽水,喝完后两个空瓶换一瓶汽水,问:你有 20 元钱,最多可以喝到几瓶汽水?(可以借但要有借有还)

根据你借钱的多少,得出你最多可以喝多少瓶

一、实现代码

#include <iostream>
using namespace std;
int main()
{
	while (true)
	{
		int x = 20;//你有的钱
		cout << "你有的钱:" << x << "元" << endl;
		int y = 0;//你借的钱;
		cout << "你要借多少钱:";
		cin >> y;

		if (y <= x)//根据有借有还(x+y)/2=x,当有时y <= x,首次借钱还得起钱
		{
			int sum1 = x + y;//目前手上有的空瓶
			int sum = 0;//记录用空瓶换喝的瓶数

			int tmp1 = 0;//记录空瓶为奇数的变量

			if (sum1 % 2 == 1)//判断起始空瓶数的奇偶
			{
				sum1 = sum1 - 1;//若为奇数,减去一个空瓶
				tmp1++;//记下减去的空瓶
			}

			sum1 = sum1 / 2 - y;//先还钱

			while (sum1 >= 1)
			{
				if (sum1 % 2 == 1)//判断换购过程中空瓶数的奇偶
				{
					tmp1++;//若为奇数,记下接下来会,被自动减去的空瓶
				}
				sum = sum1 + sum;//累加,每次换购的瓶数
				sum1 = sum1 / 2;//进行换购,奇数自动减去一个空瓶
			}

			//统计规律,y为偶数时,tmp1为偶数,y为奇数时,tmp1为奇数
			if (tmp1 % 2 == 0)
			{
				int all = x + y + sum + tmp1 / 2;
				cout << "你可以最多喝:" << all << "瓶" << endl;
			}
			if (tmp1 % 2 == 1)
			{
				int all = x + y + sum + tmp1 / 2 + 1;
				cout << "你可以最多喝:" << all << "瓶" << endl;

			}
			break;
		}
		else//根据有借有还(x+y)/2=x,当有y>x时,首次借钱还不起钱
		{
			cout << "你还不起首次借的钱,不可以借这么多,重来" << endl;
			continue;
		}
		cout << endl;
	}
	return 0;
}

二、运行结果

在这里插入图片描述

如有不足之处,还望指正[1]


  1. 如果对您有帮助可以点赞、收藏、关注,将会是我最大的动力 ↩︎

猜你喜欢

转载自www.cnblogs.com/CoutCodes/p/12766531.html