现在的位置: 首页 > 综合 > 正文

C# 空汽水瓶问题

2012年06月28日 ⁄ 综合 ⁄ 共 1449字 ⁄ 字号 评论关闭

Problem description

  有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?

Input

  输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1<=n<=100),表示小张手上的空汽水瓶数。n=0表示输入结束,你的程序不应当处理这一行。

Output

  对于每组测试数据,输出一行,表示最多可以喝的汽水瓶数。如果一瓶也喝不到,输出0。

Sample Input

3

10

81

0

Sample Output

1

5

40

Problem Source

  The Sixth Hunan Collegiate Programming Contest

[WebMethod]
        public int NullQiWatePing_Q(int n)
        {
            //2->1 (2/3=0,2,0+2=2,[1]+2=3,3/3=1)
            //3->1 (3/3=1)
            //4->2 (4/3=1,1;1+1=2,[1]+2=3,3/3=1)
            //5->2 (5/3=1,2;1+2=3,3/3=1)
            //6->2 (6/3=2)
            //7->3 (7/3=2,1;2+1=3;3/3=1)
            //8->4 (8/3=2,2;2+2=4)
            //10->5 (10/3=3,1;3/3=1;1+1=2;3-2=1)
            int rbc = 0;
            if (n < 1) return rbc;
            if (n == 2) return 1;
            
            int z = n / 3;   //整数部分
            int y=n%3;       //余数部分
            if (z == 0) return z;
            return z + NullQiWatePing_Q(z + y);
        }

        [WebMethod]
        public void NullQiWatePing_Q_Loop()
        {
            for (int i = 0; i < 100; i++)
            {
                this.Context.Response.Write(i.ToString() + "=" + NullQiWatePing_Q(i).ToString() + "<br>");
            }
        }

结果为:

空汽水瓶个数=可喝汽水瓶个数

0=0
1=0
2=1
3=1
4=2
5=2
6=3
7=3
8=4
9=4
10=5
11=5
12=6
13=6
14=7
15=7
16=8
17=8
18=9
19=9
20=10
21=10
22=11
23=11
24=12
25=12
26=13
27=13
28=14
29=14
30=15
31=15
32=16
33=16
34=17
35=17
36=18
37=18
38=19
39=19
40=20
41=20
42=21
43=21
44=22
45=22
46=23
47=23
48=24
49=24
50=25
51=25
52=26
53=26
54=27
55=27
56=28
57=28
58=29
59=29
60=30
61=30
62=31
63=31
64=32
65=32
66=33
67=33
68=34
69=34
70=35
71=35
72=36
73=36
74=37
75=37
76=38
77=38
78=39
79=39
80=40
81=40
82=41
83=41
84=42
85=42
86=43
87=43
88=44
89=44
90=45
91=45
92=46
93=46
94=47
95=47
96=48
97=48
98=49
99=49

【上篇】
【下篇】

抱歉!评论已关闭.