• 洛谷 P3951 NOIP 2017 小凯的疑惑


    洛谷 P3951 NOIP 2017 小凯的疑惑

    题目描述

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

    输入格式

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

    输出格式

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

    输入输出样例

    输入 #1

    3 7
    

    输出 #1

    11
    

    说明/提示

    【输入输出样例 1 说明】

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

    (12 = 3 imes 4 + 7 imes 0)

    (13 = 3 imes 2 + 7 imes 1)

    (14 = 3 imes 0 + 7 imes 2)

    (15 = 3 imes 5 + 7 imes 0)

    【数据范围与约定】

    对于 (30\%)的数据: (1 le a,b le 50)

    对于 (60\%)的数据: (1 le a,b le 10^4)

    对于(100\%)的数据:(1 le a,b le 10^9)

    分析

    我们不妨设 (a<b),答案为(x)

    如果(x)可以被(a)(b)表示出来的话,那么就有

    (x=ma+nb(m geq 0,n geq 0))

    但是(x)不能表达成上面的式子,我们要使(x)最大,因为(a<b),所以令(n=-1)

    而且(ma)不能被(b)整除,否则(b)又会多出一个因子

    因此(m_{max}=b-1)

    所以(x=a(b-1)-b=ab-a-b)

    (a > b)时推出的式子完全相同,因此最终的答案为

    (ab-a-b)

    代码

    #include<cstdio>
    int main(){
        long long a,b;
        scanf("%lld%lld",&a,&b);
        printf("%lld
    ",a*b-a-b);
        return 0;
    }
    
  • 相关阅读:
    Linux ansible 常用模块二
    Linux之ansible 常用模块
    flask websocket实现用例
    flask--上下文原理
    python Django
    python 并发编程 锁 / 信号量 / 事件 / 队列(进程间通信(IPC)) /生产者消费者模式
    并发编程 process 模块的方法及运用 僵尸与孤儿
    python 并发编程 操作系统 进程 并发.并行 及 同步/异步,阻塞/非阻塞
    python 网络编程粘包解决方案2 + ftp上传 + socketserver
    第一节 机器学习基础
  • 原文地址:https://www.cnblogs.com/liuchanglc/p/13562096.html
Copyright © 2020-2023  润新知