题目描述

Jams是一家酒吧的老板,他的酒吧提供2种体积的啤酒,a ml 和 b ml,分别使用容积为a ml 和 b ml的酒杯来装载。
酒吧的生意并不好。Jams发现酒鬼们都很穷,不像他那么土豪。有时,他们会因为负担不起a ml 或者 b ml酒的消费,而不得不离去。因此,Jams决定出手第三种体积的啤酒(较小体积的啤酒)。
Jams只有两种杯子,容积分别为 a ml 和 b ml,而且啤酒杯是没有刻度的。他只能通过两种杯子和酒桶间的互相倾倒来得到新的体积的酒。
倒酒步骤为:
(1) 规定a>=b
(2) 酒桶容积无限,酒桶中酒体积无限大。
(3) 只能包含三种可能的倒酒操作:
1、 将酒桶中的酒倒入容积为b ml的酒杯中;
2、 将容积为a ml的酒杯中的酒倒入酒桶;
3、 将容积为b ml的酒杯中的酒倒入容积为 a ml的酒杯中。
(4) 每次倒酒必须把杯子倒满或者把被倾倒的杯子倒空。
Jams希望通过若干次倾倒得到容积为 a ml酒杯中剩下的就体积尽可能小,他请求你帮助他设计倾倒方案。

输入:

两个整数a,b(0<b<=a<=10^9)
输出
第一行一个整数,表示可以得到的最小体积的酒。
第二行两个整数Pa和Pb(中间用一个空格分开),分别表示从体积为a ml的酒杯中到处酒的次数和将酒倒入体积为b ml的酒杯的次数。
若有多种可能的Pa,Pb满足要求,那么请输出Pa最小的。若Pa最小的时候有多个Pb,那么输出Pb最小的。

样例输入

5 3

样例输出

1
1 2

倾倒方案为:
1、 桶->B;
2、 B->A;
3、 桶->B;
4、 B->A;
5、 A->桶;
6、 B->A;

对于20%的数据,pa,pb总和不超过5
对于60%的数据,pa<=10^8
对于100%的数据,0<b<=a<=10^9

题解

作为一个渣,我还是太弱了,竟然没有马上看出来是exgcd。至于调整答案试试就好。

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<cmath>
#include<algorithm>
#define ll long long
using namespace std;
int a,b;
ll X,Y;
int gcd(int x,int y)
{if(y==0) return x;else return gcd(y,x%y);
}
void exgcd(int x,int y)
{if(y==0) {X=1; Y=0; return;}else{exgcd(y,x%y);ll t=X;X=Y; Y=t-(x/y)*Y;}
}
int main()
{freopen("pour.in","r",stdin);freopen("pour.out","w",stdout);scanf("%d%d",&a,&b);int mins=gcd(a,b);printf("%d\n",mins);a/=mins,b/=mins;exgcd(a,b);//printf("%d %d\n",X,Y);while(Y<=0) Y=Y+a;X=(ll)(1-Y*b)/(ll)(a);printf("%I64d %I64d\n",-X,Y);return 0;
}

模拟赛 Jams倒酒相关推荐

  1. 【19/04/18 膜赛】 Jams倒酒(pour)

    题目: 题目描述 Jams是一家酒吧的老板,他的酒吧提供2种体积的啤酒,a ml 和 b ml,分别使用容积为a ml 和 b ml的酒杯来装载. 酒吧的生意并不好.Jams发现酒鬼们都很穷,不像他那 ...

  2. noip模拟赛 写代码

    分析:这其实就是括号匹配题,一眼贪心题,不过一开始贪错了,以为([)]是合法的......其实括号之间不能嵌套. 一开始的想法是尽量往左边填左括号,因为每种括号的数量都确定了,那么左括号和右括号的数量 ...

  3. 5.4QBXT 模拟赛 (Rank1 机械键盘 蛤蛤)

    NOIP2016提高组模拟赛 --By wangyurzee7 中文题目名称 纸牌 杯具 辣鸡 英文题目与子目录名 cards cups spicychicken 可执行文件名 cards cups ...

  4. 「CSP-S模拟赛」2019第四场

    「CSP-S模拟赛」2019第四场 T1 「JOI 2014 Final」JOI 徽章 题目 考场思考(正解) T2 「JOI 2015 Final」分蛋糕 2 题目 考场思考(正解) T3 「CQO ...

  5. GMOJ - 2021.07.20【普及组】模拟赛C组 - 排座椅(seat)、传球游戏(ball)、立体图(drawing)、间谍派遣、seek

    文章目录 luogu博客链接 GMOJ - 2021.07.20[普及组]模拟赛C组 - 排座椅(seat).传球游戏(ball).立体图(drawing).间谍派遣.seek T1 排座椅(seat ...

  6. NOI.AC NOIP模拟赛 第六场 游记

    NOI.AC NOIP模拟赛 第六场 游记 queen 题目大意: 在一个\(n\times n(n\le10^5)\)的棋盘上,放有\(m(m\le10^5)\)个皇后,其中每一个皇后都可以向上.下 ...

  7. 2017.6.11 校内模拟赛

    题面及数据及std(有本人的也有原来的) :2017.6.11 校内模拟赛 T1 自己在纸上模拟一下后就会发现 可以用栈来搞一搞事情 受了上次zsq 讲的双栈排序的启发.. 具体就是将原盘子大小cop ...

  8. 2020年蓝桥杯模拟赛2020.3.25直播笔记

    2020年蓝桥杯模拟赛解题报告(CPP版本) 第八题 长草的bfs写法[我想暴力模拟O kmn] 深搜会爆 bfs像投到水里的涟漪 问题: const int dx[] = {1, 0, -1, 0} ...

  9. 2021年 第12届 蓝桥杯 第4次模拟赛真题详解及小结【Java版】

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  10. 2021年 第12届 蓝桥杯 第3次模拟赛真题详解及小结【Java版】

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

最新文章

  1. Brute Force算法介绍及C++实现
  2. 《Python数据分析》2nd
  3. C++中struct和class关键字的区别
  4. 《码出高效:Java开发手册》背后的故事
  5. RTP/RTCP/RTSP协议初探
  6. Git 添加和提交组合命令
  7. uinty粒子系统子物体变大_Unity的粒子系统(一)基础篇
  8. SPOOLing假脱机技术详细介绍
  9. linux 文件-s,Linux下访问文件的基本模式
  10. DataFrame计算corr()函数计算相关系数时,出现返回值为空或NaN的情况+np.log1p()
  11. (转)任正非圣诞文章:千古兴亡多少事,一江春水向东流,为轮值CEO鸣锣开道...
  12. wincap4.11在vc6下编译出现_W64错误
  13. c++ 字符串分割和数字格式化输出
  14. Python3操作EXCEL,取汉字首字母,拼接全拼
  15. 2021-12-2 uniapp地图定位的研究
  16. 1047: 字符图形3-平行四边形
  17. Download EEGLAB
  18. BGP学习笔记更新版
  19. 计算机网络:数据链路层:有线和无线网络
  20. 机器视觉学习系列四:身份证识别

热门文章

  1. 【不忘初心】Windows11 22000.168 X64 四合一[纯净精简版][2.77G](2021.8.29)
  2. Bart模型应用实例及解析(二)————基于泰坦尼克号数据集的分类模型
  3. 跟着Vam一起学习Typescript(第一期)(更新中)
  4. vue的proxy代理
  5. E_Groundhog Chasing Death(不错的数论)
  6. java 回归分析_机器学习的回归是什么
  7. 宝塔同时安装苹果cms海洋cms_苹果cmsV8/海洋cms/飞飞cms转换成苹果cmsv10插件
  8. uni-app以h5网页的方式发布企业微信应用
  9. halcon 20.11.02 深度学习语义分割例程报错
  10. bugku秋名山老司机