zoukankan      html  css  js  c++  java
  • 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=1;y=0;
            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
    ",vgcd);
        if(x>0){
            while(x-b/vgcd>0)x-=b/vgcd,y+=a/vgcd;
            printf("%d %d",-y,x);
        }
        else {
            while(x<=0)x+=b/vgcd,y-=a/vgcd;
            printf("%d %d",-y,x);
        }
        fclose(stdin);fclose(stdout);
        return 0;
    }
  • 相关阅读:
    PHP 大小写转换、首字母大写、每个单词首字母大写转换相关函数
    【论文学习4】BiSample: Bidirectional Sampling for Handling Missing Data with Local Differential Privacy
    【论文学习3】Local Differential Privacy for Deep Learning
    【论文学习2】 Differential Privacy Reinforcement Learning
    深度学习中的优化算法
    Spatial crowdsourcing
    “pip install tensorflow ”出现错误
    python或pip'不是内部或外部命令”
    pip install torch出现错误
    打不开gitHub的解决方法
  • 原文地址:https://www.cnblogs.com/harden/p/6075678.html
Copyright © 2011-2022 走看看