你在便利商店看到一個這樣的宣傳單: "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
沒有留言:
張貼留言