题目描述

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

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

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

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

(1)a≥b;

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

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

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

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

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

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

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

输入输出格式

输入格式:

两个整数a和b(0<b≤a≤10^9)

输出格式:

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

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

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

输入输出样例

输入样例#1:

5 3

输出样例#1:

1
1 2

说明

样例解释:倾倒的方案为:

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

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

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

题解: 扩展欧几里得

a中酒全部到点就相当于对a取模了..然后假设倒入b中y次,则。

by≡?(mod a),要求的就是最小的?,显然?就是gcd(a,b)。因为

ax+by=?,?最小就是gcd(a,b)喽。然后扩展欧几里得就好了...

一开始50,在最小解上花费了很长时间..

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;int a,b,x,y,r;int exgcd(int a,int b,int &x,int &y){if(b==0){x=1;y=0;return a;}int t,r=exgcd(b,a%b,x,y);t=x;x=y;y=t-a/b*y;return r;
}int main(){scanf("%d%d",&a,&b);r=exgcd(a,b,x,y);x*=-1;a*=-1;while(x<0||y<0){x+=b/r;y-=a/r*(x>=0);}printf("%d\n",r);printf("%d %d",x,y);return 0;
}

转载于:https://www.cnblogs.com/zzyh/p/7670141.html

洛谷 P1292 倒酒相关推荐

  1. 洛谷-题解 P2672 【推销员】

    独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...

  2. 洛谷P1003 铺地毯 noip2011提高组day1T1

    洛谷P1003 铺地毯 noip2011提高组day1T1 洛谷原题 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n ...

  3. 洛谷 P1703 那个什么密码2

    P1703 那个什么密码2 题目背景 https://www.luogu.org/problem/show?pid=1079 题目描述 与原题一模一样.具体不同请见输入格式 输入输出格式 输入格式: ...

  4. Educational Codeforces Round 81 (Rated for Div. 2) F.Good Contest \ 洛谷 划艇 组合 计数dp

    cf传送门 P3643 [APIO2016]划艇 文章目录 题意: 思路: 题意: aia_iai​在[li,ri][l_i,r_i][li​,ri​]等概率随机选一个数,求aaa数组不增的概率. 思 ...

  5. 洛谷-DFS-1019-单词接龙-个人AC题解和公共AC题解笔记

    学习内容: 预处理 万能头文件 string的使用 话不多说,直奔主题 本人AC代码 #include<iostream> #include<cstdio> #include& ...

  6. 洛谷OJ上的A+B花(zhuang)式(bi)解法

    转眼间快到了8月,一想自己都毕业好久了,很怀念曾经在各大OJ上刷题的时光,今天无意在一个算法群里看到最近有个叫洛谷的oj网站貌似蛮火的,于是注册了一个下进去看一看,顺手打开了A+B problem,然 ...

  7. 字符串——垂直柱状图(洛谷 P1598)

    题目选自洛谷P1598 字符串的题确实够刁钻,有的明明思路很简单,但是写起来就很复杂. 这道题难点在于如何输出"柱状图". 用二维数组来存放每一行的结果再挨个输出吗? 显然这不太行 ...

  8. 深度优先搜索——单词接龙(洛谷 P1019)

    题目选自洛谷P1019 首先在题意上可能有些误解. 两个单词合并时,合并部分取的是最小重叠部分 相邻的两部分不能存在包含关系就是说如果存在包含关系,就不能标记为使用过. 每个单词最多出现两次. (其实 ...

  9. 分治——Secret Cow Code S(洛谷 P3612)

    题目选自洛谷P3612 梳理题意 给定一个字符串,每次将其最后一个字符移到最前方,形成的新串接到原串后作为下一次操作的字符串 现询问第 N 个位置的字符 简要分析 看一眼数据范围,N<10^18 ...

最新文章

  1. linux下varnish4配置语法(基础)
  2. python-pymysql模块的使用入门
  3. 景深决定照相机什么特性_手机为什么达不到相机的景深效果?
  4. Matlab验证dtft共轭性质,数字信号处理实验4重点.docx
  5. 用 Python 爬了 10 万个产品经理的信息:KPI 多高,锅就有多大!
  6. 最近在修改statusBar,添加几张图片.编译源码包时,一直提示无法找到R.drawable.xxxx必须手动编译下指定的图片文件生成R.
  7. 记录linq.js神器之gorup by 多个字段的方法
  8. PHP上传文件到项目public路径接口
  9. 飞Young任意路由器连接[破解路由器限制]
  10. 电脑可以上QQ但是打不开网页
  11. python、pygame开发的太空大战游戏源代码
  12. 逐步推进的团队项目准备工作全记录
  13. centos 安装gstreamer_64位CentOS系统中安装32位开发库
  14. 怎样串联两台无线路由器:[1]二级路由设置
  15. 想从事编程报考专业:计算机技术好,还是软件工程好?
  16. 用Python每天自动给女朋友免费发短信
  17. iOS真机调试TestFlight安装及提交App Store审核教程
  18. 幸运盒子幸运砸金蛋微信盲盒游戏源码
  19. [MetalKit]33-Ambient-Occlusion-in-Metal环境光遮蔽
  20. python用ocr技术识别_使用Python和OCR实现图像识别

热门文章

  1. Codeforces Global Round 4 - 1178D. Prime Graph(构造+切比雪夫定理)
  2. 红石计算机简单教程,【图片】《小学生也看得懂的红石计算机教程:从零构建自己的红石计算机》【minecraft吧】_百度贴吧...
  3. 打印机的设置窗口看不到已经安装的打印机列表的处理
  4. 【实验技术笔记】细胞表型检测之细胞迁移(细胞划痕实验 + transwell实验)
  5. 减少模板中的代码膨胀
  6. 【20201127期嵌入式AI周报】NanoDet 目标检测模型、移植 ncnn到 RISC-V等!
  7. 国家邮政局发布2021年快递服务满意度和时限准时率测结果
  8. vuejs中input的value值问题
  9. 【并发编程二十】协程(coroutine)_协程库
  10. 江南爱窗帘十大品牌 教你穿好窗帘这件外衣