空瓶子换可乐

 题目:

      Once upon a time, there is a special coco-cola store. If you return three empty bottles to the shop,
you’ll get a full bottle of coco-cola to drink. If you have n empty bottles right in your hand, how many
full bottles of coco-cola can you drink?


Input
There will be at most 10 test cases, each containing a single line with an integer n (1 ≤ n ≤ 100). The
input terminates with n = 0, which should not be processed.


Output
For each test case, print the number of full bottles of coco-cola that you can drink.
Spoiler
Let me tell you how to drink 5 full bottles with 10 empty bottles: get 3 full bottles with 9 empty
bottles, drink them to get 3 empty bottles, and again get a full bottle from them. Now you have 2
empty bottles. Borrow another empty bottle from the shop, then get another full bottle. Drink it, and
finally return this empty bottle to the shop!


Sample Input
3
10
81
0
Sample Output
1
5
40

 

思路分析:

     使用的方法是取除数跟取余数。每次循环用当前的总空瓶子n来除以3就可以得到当前能换取的可乐瓶数,然后记录此时的余数b,那么当前的总空瓶数就是n+b。特殊的情况要考虑,就是还剩两个空瓶子时可以先借一个空瓶子,这样就多得到一个可乐。

源代码:

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int n;
 5     while (scanf("%d", &n) == 1 && n)
 6     {
 7         int a = 0, b = 0;
 8         int count = 0;
 9         if (n == 1 || n == 2)          //两种特殊情况
10         {
11             count = n - 1;                  
12         }
13         while ((n + b) >= 3)
14         {
15             a = n + b;
16             n = (n + b) / 3;          //n+b为目前的所有空瓶子数
17             b = a % 3;
18             count += n;              //目前换取到的可乐数
19 
20             if (n + b == 2)          //如果最后还剩下两个空瓶子就可以先借一
21                                                            //个空瓶子
22                 count += 1;          //从而又可以多得一瓶可乐
23         }
24 
25 
26         printf("%d\n", count);
27     }
28 
29 
30     return 0;
31 }

心得:

         这次比赛心态很不好,就这道题本来是简单的题,却很久才做出来,当时心里已经很浮躁了,后面的题更是无心去看了,结果整场比赛就做出这一道题,╮(╯▽╰)╭简直不能用文字形容自己的心情,经历了才知道。虽然自己不是那么在乎排名,但是浮躁的心态真的是个很大的障碍。不放弃!干吧得!

 

  

posted @ 2015-07-16 22:15  白一  阅读(523)  评论(0编辑  收藏  举报