1 条题解

  • 0
    @ 2025-8-24 21:54:30

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Mzwuzad
    **

    搬运于2025-08-24 21:54:30,当前版本为作者最后更新于2018-01-03 01:37:43,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    题目描述

    小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。每种金币小凯都有无数个。在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的。现在小凯想知道在无法准确支付的物品中,最贵的价值是多少金币?注意:输入数据保证存在小凯无法准确支付的商品。

    题目链接

    NOIP2017 小凯的疑惑

    题解

    不妨设 a<b a < b

    假设答案为 x x

    xma(modb)(1mb1)x \equiv ma \pmod b (1 \leq m \leq b - 1)

    x=ma+nb(1mb1)x = ma + nb (1 \leq m \leq b - 1)

    显然当 n0 n \geq 0 x x 可以用 a,b a, b 表示出来,不合题意。

    因此当 n=1 n = -1 x x 取得最大值,此时 x=mab x = ma - b

    显然当 m m 取得最大值 b1 b - 1 x x 最大,此时 x=(b1)ab=abab x = (b - 1)a - b = ab - a - b

    因此 a,b a, b 所表示不出的最大的数是 abab ab - a - b

    代码

    #include <cstdio>
    
    typedef long long ll;
    
    int main(int argc, char *argv[]) {
        freopen("math.in", "r", stdin);
        freopen("math.out", "w", stdout);
    
        int a, b;
        scanf("%d %d", &a, &b);
        printf("%lld\n", a * b - a - b);
        
        fclose(stdin);
        fclose(stdout);
        return 0;
    }
    
    • 1

    信息

    ID
    1658
    时间
    1000ms
    内存
    250MiB
    难度
    3
    标签
    递交数
    0
    已通过
    0
    上传者