同題:UVa 11877 – The Coco-Cola Store
從前,有一家特別的可口可樂商店。如果你把三個空瓶子退還給商店,你將得到一瓶滿滿的可口可樂可以喝。如果你手上有 N 個空瓶子,你最多可以喝到多少瓶可口可樂?
提示: 讓我告訴你如何用 10 個空瓶喝到 5 瓶滿瓶可口可樂:用 9 個空瓶換取 3 瓶滿瓶,喝掉它們得到 3 個空瓶,然後再次用這些空瓶換取一瓶滿瓶。現在你有 2 個空瓶,向店裡借一個空瓶,再換取一瓶滿瓶。喝掉它,最後將這個空瓶還給店裡。
範例測資
範例輸入 | 範例輸出 |
---|---|
EOF 輸入,每個案例包含一行整數 N (1 ≤ N ≤ 100)。輸入以 N = 0 結束,此數值不需處理。 | 對於每個測試案例,輸出你可以喝到的滿瓶可口可樂的數量。 |
3 10 81 0 | 1 5 40 |
解題思路
使用 While (N >= 3),裡面先宣告一個變數 bottle 代表可以喝多少可樂,也就是 N/3。之後將答案 += bottle、N -= bottle*3、N += bottle。
因為可以跟店家借空瓶子,所以在 While迴圈 外面要新增一個判斷式,如果 While迴圈 結束之後 N == 2,代表可以借瓶子,答案++。
範例程式碼-ZeroJudge N803: The Coco-Cola Store
#include <iostream>
using namespace std;
int main() {
cin.sync_with_stdio(0);
cin.tie(0);
int N;
while (cin >> N && N != 0) {
int ans = 0;
while (N >= 3) {
int bottle = N/3;
ans += bottle;
N -= bottle*3;
N += bottle;
}
if (N == 2) ans++;
cout << ans << "\n";
}
}
//ZeroJudge N803
//Dr. SeanXD