题目名称 1225. 倒酒
输入输出 pour.in/out
难度等级 ★★
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 10
题目来源 Gravatar王者自由 于2012-10-26加入
开放分组 全部用户
提交状态
分类标签
扩展欧几里得算法
分享题解
通过:104, 提交:303, 通过率:34.32%
Gravatardateri 100 0.000 s 0.00 MiB C++
GravatarBaDBoY 100 0.000 s 0.00 MiB C++
Gravatar┭┮﹏┭┮ 100 0.000 s 0.00 MiB C++
GravatarFFF团 100 0.001 s 0.31 MiB C++
Gravatarwangxh 100 0.001 s 0.31 MiB C++
Gravatarforever 100 0.002 s 0.29 MiB C++
Gravatar炎帝 100 0.002 s 0.29 MiB C++
Gravatar星火燎原 100 0.002 s 0.29 MiB C++
Gravatar星火燎原 100 0.002 s 0.29 MiB C++
Gravatar星火燎原 100 0.002 s 0.29 MiB C++
关于 倒酒 的近10条评论(全部评论)
2333分留念
Gravatar┭┮﹏┭┮
2024-01-03 19:07 5楼
膜拜榜上各位_(:з」∠)_
GravatarPhosphorus15
2016-11-07 10:23 4楼
回复 @木人 :
只会while
GravatarHzoi_Yniverse
2016-10-24 14:50 3楼
GravatarAntiLeaf
2016-10-24 14:30 2楼
调整答案不要用while调整。
Gravatarkito
2016-10-24 14:16 1楼

1225. 倒酒

★★   输入文件:pour.in   输出文件:pour.out   简单对比
时间限制:1 s   内存限制:128 MiB

【问题描述】

Winy是一家酒吧的老板,他的酒吧提供两种体积的啤酒,a mlb ml,分别使用容积为a mlb ml的酒杯来装载。

    酒吧的生意并不好。Winy发现酒鬼们都非常穷。有时,他们会因为负担不起aml或者bml啤酒的消费,而不得不离去。因此,Winy决定出售第三种体积的啤酒(较小体积的啤酒)

  Winy只有两种杯子,容积分别为a mlb ml,而且啤酒杯是没有刻度的。他只能通过两种杯子和酒桶间的互相倾倒来得到新的体积的酒。

    为了简化倒酒的步骤,Winy规定:

    (1ab

    (2)酒桶容积无限大,酒桶中酒的体积也是无限大(但远小于桶的容积)

    (3)只包含三种可能的倒酒操作:

     ①将酒桶中的酒倒入容积为b ml的酒杯中;

     ②将容积为a ml的酒杯中的酒倒入酒桶;

     ③将容积为b ml的酒杯中的酒倒入容积为a ml的酒杯中。

4)每次倒酒必须把杯子倒满或把被倾倒的杯子倒空。

Winy希望通过若干次倾倒得到容积为a ml酒杯中剩下的酒的体积尽可能小,他请求你帮助他设计倾倒的方案

【输入】

两个整数ab0<ba109

【输出】

第一行一个整数c,表示可以得到的酒的最小体积。

第二行两个整数PaPb(中间用一个空格分隔),分别表示从体积为a ml的酒杯中倒出酒的次数和将酒倒入体积为b ml的酒杯中的次数。

若有多种可能的PaPb满足要求,那么请输出Pa最小的一个。若在Pa最小的情况下,有多个Pb满足要求,请输出Pb最小的一个。

【样例】

pour.in

5 3

pour.out

1

1 2

倾倒的方案为:

1、桶->B杯; 2B->A杯;

3、桶->B杯; 4B->A杯;

5A->; 6B->A杯;