题目链接:http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=23309
题目大意:
用3个空可乐瓶可以换取一瓶满的可乐,设拥有n(1<=n<=100)个空可乐瓶,求最多能喝到多少瓶可乐
需要注意的是,假设拥有10个空瓶,先换3瓶可乐,喝完后拥有4个空瓶,再换取1瓶,喝完后有2个空瓶,这时可以借一个空瓶,用此时的3个空瓶换一瓶可乐,喝完归还瓶子,这样,10个空瓶可以喝到5瓶可乐。
举例:
Sample Input
3
10
81
0
Sample Output
1
5
40
题目分析:
根据提示剩2个空瓶可以继续换得一瓶可乐,可以采用条件判别语句(while,if等),当空瓶数大于1时可以继续兑换,此时又要分两种情况讨论,空瓶数是否等于2,若是,则换取一瓶可乐后结束条件判别,否则继续。
源代码:
1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 int n,k,count; 6 while(cin>>n&&n) 7 { count=0; 8 k=0; 9 while(n>1) 10 { if(n==2)//瓶子剩2个可借1饮1还1 11 { ++count; 12 break; 13 } 14 k=n/3; 15 count+=k;//计算可换取的瓶子数 16 n=n-2*k;//计算兑换后剩下的空瓶数 17 } 18 cout<<count<<endl; 19 } 20 return 0; 21 }