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

可乐商店问题

题目大意:

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 } 

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

 

你可能感兴趣的:(问题)