• 小凯的疑惑 [2017TG D1T1]


    应该叫程序员的疑惑

    题目描述

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

    输入格式

    两个正整数 a 和 b,它们之间用一个空格隔开,表示小凯中金币的面值。

    输出格式

    一个正整数 N,表示不找零的情况下,小凯用手中的金币不能准确支付的最贵的物品的价值。

    输入输出样例

    输入 
    3 7
    输出
    11

    说明/提示

    【输入输出样例 1 说明】

    小凯手中有面值为37的金币无数个,在不找零的前提下无法准确支付价值为1, 2,4,5,8,11的物品,其中最贵的物品价值为11,比11贵的物品都能买到,比如:

    12=3×4+7×0

    13=3×2+7×1

    14=3×0+7×2

    15=3×5+7×0

    代码

    #include<cstdio>
    using namespace std;
    
    int main()
    {
        long long a,b;
        scanf("%lld%lld",&a,&b);
        printf("%lld",a*b-a-b);
        return 0;
     } 

    哼哼,如此潦草的代码。。居然是如此潦草的代码???!!!

    好的吧,看了luogu题解中大佬们的证明【完美证明了我的蒟蒻属性】

    分析

    不妨设 a < b

    假设答案为 x

    xma(modb)(1mb1)

    x=ma+nb(1mb1)

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

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

    显然当 mm 取得最大值 b1时x最大,此时x=(b1)ab=abab

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

  • 相关阅读:
    我的第一个项目--总结
    c++中的继承
    指针带来的意想不到的功能紊乱
    一个很难发现的内存泄漏
    我的第一个项目--迭代开发总结
    内存访问冲突问题(非法内存访问)
    Debug Assertion Failed mfc140ud.dll
    javaweb 开发总结五-----servlet开发(一)
    javaweb学习总结四---http协议
    Tomcat服务器学习和使用二·
  • 原文地址:https://www.cnblogs.com/zhugezisong/p/11319347.html
Copyright © 2020-2023  润新知