波瓦松的分酒趣题

波瓦松的分酒趣题。法国著名数学家波瓦松青年时代研究过一个有趣的数学问题:某人有12品脱的啤酒一瓶,想从中倒出6品脱,但他没有6品脱的容器,仅有一个8品脱和一个5品脱的容器,怎样倒才能将啤酒分为两个6品脱呢?

**输入格式要求:"%d%d%d%d" 提示信息:"Input Full a,Empty b,c,Get i:"

**输出格式要求:" a%d b%d c%d\n%4d%4d%4d\n" "%4d%4d%4d\n"

程序运行示例如下:

Input Full a,Empty b,c,Get i: 12 8 5 6

a12 b8 c5

12 0 0

4 8 0

4 3 5

9 3 0

9 0 3

1 8 3

1 6 5

6 6 0

a12 b5 c8

12 0 0

7 5 0

7 0 5

2 5 5

2 2 8

10 2 0

10 0 2

5 5 2

5 0 7

0 5 7

0 4 8

8 4 0

8 0 4

3 5 4

3 1 8

11 1 0

11 0 1

6 5 1

6 0 6

#include<stdio.h>
int i;
get(int a, int y, int z)
{
    int b = 0, c = 0;
    printf("  a%d  b%d  c%d\n%4d%4d%4d\n" , a, y, z, a, b, c);
    while (a != i || b != i && c != i)
    {
        if (!b)
        {
            a -= y;
            b = y;
        }
        else if (c == z)
        {
            a += z;
            c = 0;
        }
        else if (b > z - c)
        {
            b -= (z - c);
            c = z;
        }
        else
        {
            c += b;
            b = 0;
        }
        printf("%4d%4d%4d\n", a, b, c);
    }
}
geti(int a, int z, int y)
{
    int b = 0, c = 0;
    printf("  a%d  b%d  c%d\n%4d%4d%4d\n" , a, y, z, a, b, c);
    while (a != i || b != i && c != i)
    {
        if (!b)
        {
            a -= y;
            b = y;
        }
        else if (c == z)
        {
            a += z;
            c = 0;
        }
        else if (b > z - c)
        {
            b -= (z - c);
            c = z;
        }
        else
        {
            c += b;
            b = 0;
        }
        printf("%4d%4d%4d\n", a, b, c);
    }
}
int main()
{
    int a, b, c;
    printf("Input Full a,Empty b,c,Get i:");
    scanf("%d%d%d%d", &a, &b, &c, &i);
    get(a, b, c);
    get(a, c, b);
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值