close
題目概要:
超商貼著3瓶可樂瓶可以換1瓶可樂,請計算出最多可以喝到多少瓶可樂。空瓶可以跟朋友借,但是需要歸還。
解題方向:
當N(可樂瓶子數量)<=1時,可以直接印出目前的可樂瓶數,因為你再怎麼借,也無法歸還空瓶給朋友。當N>1時,用個變數(ans)紀錄已經喝過的可樂,再重新計算可樂瓶子數量(N),直到可樂瓶子數量(N)=2時,可以跟朋友借一個瓶子,即可換得最後1瓶可樂,喝完的可樂瓶剛好可以還給朋友。當可樂瓶子(N)=1時,結束迴圈,印出答案。
程式碼:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Java | |
import java.util.Scanner; | |
class uva11150{ | |
public static void main(String args[]){ | |
Scanner sc=new Scanner(System.in); | |
while(sc.hasNext()){ | |
int N=sc.nextInt(); | |
int ans=0; | |
if(N<=1){ | |
//當N<=1時,直接印出目前有幾罐可樂。因為他再怎麼跟朋友借瓶子,也無法歸還空瓶。 | |
System.out.println(N); | |
}else{ | |
//ans=最多可以喝多少可樂。初始化為一開始所擁有的可樂數量。 | |
ans=N; | |
//當瓶子剩下1根時,結束迴圈。 | |
while(N!=1){ | |
if(N==2) N=N+1;//當N==2時再跟朋友借一個瓶子。 | |
ans=ans+N/3;//喝掉的可樂數量 | |
N=N%3+N/3;//目前的瓶子=原本剩下的瓶子+兌換後的瓶子 | |
} | |
//結果輸出 | |
System.out.println(ans); | |
} | |
} | |
} | |
} |
文章標籤
全站熱搜