【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. 如果對您有幫助可以點贊、收藏、關注,將會是我最大的動力 ↩︎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章