2011年7月31日 星期日

d189: 11150 - Cola

內容 :
    你在便利商店看到一個這樣的宣傳單: "3瓶空可樂罐換一瓶可樂"
    現在你決定在便利商店買一些可樂(就說N瓶好了), 你想知道你最多可以喝到多少瓶

    下面的圖形說明的當 N=8 時候的情況. 方法一是標準的做法: 在你喝了 8 瓶可樂之後, 你有 8 個空罐子, 把其中 6 瓶空罐子換成 2 瓶新的, 喝完之後你就有 4 瓶空罐子, 然後你又可以拿 3 瓶換 1 瓶新的, 最後, 你只有 2 個空罐子, 所以你再也不能再換新的可樂了. 所以你總共可以喝到 8 + 2 + 1 = 11 瓶可樂.

    可是其實你有一個更好的方法! 在第二種方法裡面, 你可以先和你的朋友(或者是店員??)借一個空罐子, 然後你就可以喝到 8 + 3 + 1 = 12 瓶可樂! 當然, 你最後要把 1 瓶空罐子還給你的朋友.
    請記得: 喝太多可樂對身體不好喔!

輸入說明 :
    輸入有好幾組資料,每一組一行, 每一行有一個正整數 N (1 <= N <= 200)。

輸出說明 :
    對於每組輸入,輸出你最多可以喝到幾瓶可樂。你可以和你的朋友借一些空罐子,但是請記得還給他一樣數量的空罐子。

範例輸入 :
8
9

範例輸出 :
12
13

出處 :
    UVa ACM 11150 (管理:snail)

程式碼 :
#include<stdio.h>

int main()
{
    int n;
    long long drink,empty,temp;
    
    while(scanf("%d",&n)==1)
    {
        drink = empty = n;
        while(empty > 2)
        {
            temp = empty / 3;
            drink = drink + temp;
            empty = empty % 3 + temp;
        }
        if(empty == 2)
            drink++;
        printf("%lld\n",drink);
    }
    return 0;
}



http://zerojudge.tw/ShowProblem?problemid=d189

沒有留言:

張貼留言