Jams倒酒
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
/*扩展欧几里得*/
#include<cstdio>
#include<iostream>
using namespace std;
int exgcd(int a,int b,int &x,int &y){
if(!b){
x=;y=;
return a;
}
int r=exgcd(b,a%b,x,y);
int t=x;x=y;y=t-a/b*y;
return r;
}
int main(){
//freopen("jh.in","r",stdin);
freopen("pour.in","r",stdin);
freopen("pour.out","w",stdout);
int x,y,a,b;
scanf("%d%d",&a,&b);
swap(a,b);
int vgcd=exgcd(a,b,x,y);
printf("%d\n",vgcd);
if(x>){
while(x-b/vgcd>)x-=b/vgcd,y+=a/vgcd;
printf("%d %d",-y,x);
}
else {
while(x<=)x+=b/vgcd,y-=a/vgcd;
printf("%d %d",-y,x);
}
fclose(stdin);fclose(stdout);
return ;
}
Jams倒酒的更多相关文章
- Jams倒酒(pour)
1.Jams倒酒(pour) Jams是一家酒吧的老板,他的酒吧提供2种体积的啤酒,a ml 和 b ml,分别使用容积为a ml 和 b ml的酒杯来装载. 酒吧的生意并不好.Jams发现酒鬼们都很 ...
- P1292 倒酒
P1292 倒酒这个题有很多模型,这个是一个变形.我令一个解为x两个整数Pa和Pb,分别表示从体积为a ml的酒杯中倒出酒的次数和将酒倒入体积为b ml的酒杯中的次数(酒杯一开始为空).b最后是0,所 ...
- 洛谷——P1292 倒酒
P1292 倒酒 题目描述 Winy是一家酒吧的老板,他的酒吧提供两种体积的啤酒,a ml和b ml,分别使用容积为a ml和b ml的酒杯来装载. 酒吧的生意并不好.Winy发现酒鬼们都非常穷.有时 ...
- 洛谷 P1292 倒酒
题目描述 Winy是一家酒吧的老板,他的酒吧提供两种体积的啤酒,a ml和b ml,分别使用容积为a ml和b ml的酒杯来装载. 酒吧的生意并不好.Winy发现酒鬼们都非常穷.有时,他们会因为负担不 ...
- 洛谷题解 P1292 【倒酒】
原题传送门 题目描述 Winy是一家酒吧的老板,他的酒吧提供两种体积的啤酒,a ml和b ml,分别使用容积为a ml和b ml的酒杯来装载. 酒吧的生意并不好.Winy发现酒鬼们都非常穷.有时,他们 ...
- python ---倒酒!!
#!/usr/bin/env python3# -*- coding: utf-8 -*-import numbersimport numpyimport math'''三个容器分别为12升.8升.5 ...
- 华哥倒酒<区间标记,二分>
题目链接 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; t ...
- 2014-10-23 NOIP模拟赛
NOIP2014模拟赛 -----lwher 时限均为1s,内存 256MB 1.Jams倒酒(pour) Jams是一家酒吧的老板,他的酒吧提供2种体积的啤酒,a ml 和 b ml,分别使用容积为 ...
- CG资源网 - Maya教程
Maya中mentalray灯光渲染终极训练视频教程 http://www.cgtsj.com/cg/f/vx3627/index.html Maya无人机建模制作训练视频教程第一季 http://w ...
随机推荐
- java之远程接口调用
一.通过地址栏传值 1.项目结构 2.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi ...
- mysql 修改表结构
alter table 表名 modify column 字段名 varchar(数量); 将varchar(50)改为255 alter table 表名 modify column 字段名 var ...
- BZOJ4610——[Wf2016]Ceiling Functi
水题一道,不是很懂为啥没人做... 1.题意:纠正一下..bzoj的题意不是很对...注意不是堆,是不平衡的二叉树,就是非旋转的treap, 另外...插入的时候,小于插在左边..大于等于插在右边 2 ...
- 剑指Offer 调整数组顺序使奇数位于偶数前面
题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 思路: ...
- linux下VMware安装出现的问题解决
linux下VMware安装出现的问题解决 linux下VMware安装出现的问题解决 报错信息 问题1liboverlay-scrollbar.so和libunity-gtk-module.so加载 ...
- Ubuntu+Apache+PHP+Mysql环境搭建
一.操作系统Ubuntu 14.04 64位,虚拟机服务器 二.Apache 1.安装Apache,安装命令:sudo apt-get install apache2 2.环境配置: 1)配置文件:路 ...
- Tomcat配置文件server.xml详解
<?xml version='1.0' encoding='utf-8'?> <Server port="8005" shutdown="SHUTDOW ...
- Hibernate 多对多关联映射, 中间表加查询条件
package com.coracle.yk.xpo.po.base; import java.util.Date; import java.util.HashSet; import java.uti ...
- phalcon 前端代码结构
phalcon 前端举例: (1) baisic.phtml + basic_ajax_get.phtml + basic_ajax_post.phtml (2) basic_get.phtml ...
- Hadoop2.2.0环境下Sqoop1.99.3安装
本文转载自http://blog.csdn.net/liuwenbo0920/article/details/40504045 1.安装准备工作: 已经装好的hadoop环境是hadoop 2.2.0 ...