1 条题解

  • 0
    @ 2026-8-25 17:13:05

    题解

    思路推导

    设整个过程中倒满 B 杯 PbP_b 次、倒空 A 杯 PaP_a 次,并在最后让 B 杯为空。此时 A 杯中的酒量为

    PbbPaa.P_b b-P_a a.

    所有可得到体积都是 gcd(a,b)\gcd(a,b) 的倍数,而按辗转相减过程可以得到 gcd(a,b)\gcd(a,b),所以最小正体积为 c=gcd(a,b)c=\gcd(a,b)

    做法

    A=a/cA=a/cB=b/cB=b/c,则需要求非负整数解

    BPbAPa=1.B P_b-A P_a=1.

    A=1A=1 时,必有 a=ba=b,直接取 Pa=0,Pb=1P_a=0,P_b=1。否则用扩展欧几里得算法求 BB 在模 AA 下的最小正逆元,作为 PbP_b。再由等式计算

    Pa=BPb1A.P_a=\frac{BP_b-1}{A}.

    AA 的其他正解都使 PbP_b 增加 AAPaP_a 增加 BB,因此上述解先使 PaP_a 最小,也随之使 PbP_b 最小。

    小范围可以直接模拟倒满、倾倒和倒空的状态循环;若 bb 整除 aa,一次倒满 B 杯并倒入 A 杯即可得到最小体积。

    正确性证明

    酒量守恒说明任一终态 A 杯酒量都可写成 PbbPaaP_b b-P_a a,故其正值至少为 gcd(a,b)\gcd(a,b)。Bézout 等式给出等于该最大公约数的整数线性组合,而规范后的非负解对应不断倒满 B 杯、A 杯满时倒空、继续倾倒余量的合法操作序列,所以该下界可达。

    约分后的方程要求 BPb1(modA)BP_b\equiv1\pmod A。所取逆元是最小正代表元,所有其他非负解均同时增加固定正量,因此输出的 Pa,PbP_a,P_b 满足题目规定的字典序最小性。

    复杂度分析

    时间复杂度为 O(logmin(a,b))O(\log\min(a,b)),空间复杂度为 O(1)O(1)

    • 1

    信息

    ID
    1049
    时间
    1000ms
    内存
    128MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者