【程式設計師面試金典】三個空汽水瓶可以換一瓶汽水。

HelloZEX發表於2018-07-25

有這樣一道智力題:“某商店規定:三個空汽水瓶可以換一瓶汽水。小張手上有十個空汽水瓶,她最多可以換多少瓶汽水喝?”答案是5瓶,方法如下:先用9個空瓶子換3瓶汽水,喝掉3瓶滿的,喝完以後4個空瓶子,用3個再換一瓶,喝掉這瓶滿的,這時候剩2個空瓶子。然後你讓老闆先借給你一瓶汽水,喝掉這瓶滿的,喝完以後用3個空瓶子換一瓶滿的還給老闆。如果小張手上有n個空汽水瓶,最多可以換多少瓶汽水喝? 

 

輸入描述:


 

輸入檔案最多包含10組測試資料,每個資料佔一行,僅包含一個正整數n(1<=n<=100),表示小張手上的空汽水瓶數。n=0表示輸入結束,你的程式不應當處理這一行。


 

輸出描述:


 

對於每組測試資料,輸出一行,表示最多可以喝的汽水瓶數。如果一瓶也喝不到,輸出0。

 

輸入例子1:

3
10
81
0

 

輸出例子1:

1
5
40

#include<iostream>
#include<vector>
using namespace std;

int calc(int number)
{
	if (number == 1 || number == 0)
	{
		return 0;
	}
	if (number == 2)
	{
		return 1;
	}
	if (number >= 3)
	{
		return (number / 3) + calc(number % 3 + (number / 3));
	}
    return 0;
}

int main() 
{
	vector<int> data;
	int index = 0;
	while (1)
	{
		int temp = 0;
		cin >> temp;
		data.push_back(temp);
		if (data[index] == 0)
		{
			break;
		}
		else
		{
			index++;
		}
	}
	
	//Calc
	for (int i = 0; i < index; i++)
	{
		cout << calc(data[i]) << endl;
	}

	return (0);
}

 

相關文章