比赛--可乐商店问题--解题报告

可乐商店问题

题目大意:

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=n/3+n%3),每次都要统计所喝的瓶子的总数量。

如果还剩两个空瓶子时可以借一个空瓶子再喝一瓶可乐。当n=0时不执行,程序结束。

程序代码:

 1 #include<cstdio>
 2 #include<iostream>
 3 using namespace std;
 4 
 5 int n[100];
 6 
 7 int main()
 8 {
 9     int n,a;
10     while(scanf("%d",&n))      //输入空瓶子数量
11     {
12         if(n==0)               //当n=0时程序结束
13             break;
14             a=0;
15         while(n>2)             //n>2时做此循环,统计所喝饮料的总数a
16         {
17             a+=n/3;            
18             n=n/3+n%3;
19         }
20         if(n==2)
21             a++;        
22         cout<<a<<endl;
23     }
24     return 0;
25 } 

心得:
这道题主要考数学思考能力,把要做的公式想到,题目就变得简单了,而且题中还给了提示。虽然一道很简单的题目,我却做了一个多小时,有一处错误总也改不对,后来静下心来终于改对了,是一处很小的错误,这提醒我以后写程序时要注意细节,不要大体过了就算了。

 

posted @ 2015-07-17 15:34  tmj  阅读(498)  评论(0编辑  收藏  举报