ZeroJudge N803: The Coco-Cola Store

同題: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

發佈留言