博客
关于我
算法笔记_192:历届试题 买不到的数目(Java)
阅读量:443 次
发布时间:2019-03-06

本文共 633 字,大约阅读时间需要 2 分钟。

为了解决这个问题,我们需要找到给定两种糖果包装的颗数下,最大的不能组合出的糖果数量。这个问题可以通过数学理论来解决,特别是当两种包装的数量互质时,我们可以使用公式来计算最大的不能组合出的数目。

方法思路

  • 问题分析:我们需要找到最大的不能用两种包装组合出的糖果数量。这个问题类似于邮票问题或青蛙问题,可以通过数学方法来解决。
  • 数学理论:当两种包装的数量互质时,最大的不能组合出的数目可以通过公式 ab - a - b 计算,其中 a 和 b 分别是两种包装的数量。
  • 互质检查:使用欧几里得算法来检查两种包装的数量是否互质。如果它们互质,则使用上述公式;否则,无法找到有限的最大数目。
  • 解决代码

    import mathn, m = map(int, input().split())gcd = math.gcd(n, m)if gcd == 1:    print(n * m - n - m)else:    print(-1)

    代码解释

  • 读取输入:使用 input() 读取两个正整数 n 和 m,分别表示两种糖果包装的数量。
  • 计算最大公约数:使用 math.gcd(n, m) 计算 n 和 m 的最大公约数。
  • 判断互质:如果最大公约数为1,说明两种包装数量互质,使用公式 n * m - n - m 计算最大的不能组合出的数目。
  • 处理非互质情况:如果两种包装数量不互质,输出 -1,表示没有有限的最大数目。
  • 这个方法高效且简洁,能够在给定约束条件下快速解决问题。

    转载地址:http://owtyz.baihongyu.com/

    你可能感兴趣的文章
    Python:deepcopy(list) vs new_list = old_list[:]
    查看>>
    Python:Google API - 从消息中获取 mimeTypes
    查看>>
    Python:Google API - 从消息中获取 mimeTypes
    查看>>
    Python:subprocess.call,stdout to file,stderr to file,在屏幕上实时显示stderr
    查看>>
    Python:TypeError:无法连接“str“和“int“对象
    查看>>
    Python:XPath 在 ElementTree 中不可用
    查看>>
    Python:从 FTP 服务器下载文件
    查看>>
    python:从列表中创建元组列表
    查看>>
    Python:从嵌套列表中删除重复项
    查看>>
    Python:从间隔映射到值
    查看>>
    Python:使用 shell=False 的子进程调用不起作用
    查看>>
    Python:修改 PATH 环境变量的平台无关方式
    查看>>
    Python:假与 0
    查看>>
    Python:函数使用
    查看>>
    Python:函数进阶
    查看>>
    Python:在整数的二进制表示中查找最长的二进制间隙
    查看>>
    Python:如何从二进制转换为 base 64 并返回?
    查看>>
    Python:如何以非阻塞方式读取子进程的标准输出
    查看>>
    Python:如何使用 plotly 制作阴影区域或交替背景颜色?
    查看>>
    Python:如何根据日期时间获取值的计数
    查看>>