
AcWing 1223. 最大比例 指数的最大公约数
排序数组:首先将给定的奖金数排序,这样可以方便后续处理。 计算可能的公比:遍历数组中的每两个相邻的数,计算它们之间的可能公比。 验证公比:对于每一个可能的公比,检查是否存在一个初始值,使得所有数都能表示为这个初始值乘以公比的若干整数次幂。 选择最大公比:在所有满足条件的公比中,选择最大的那个,并将其化简为最简分数。 读取输入:从标准输入读取数据,解析出奖金数的个数和具体数值。 排序数组:对奖金数进行排序,以便后续处理。 计算可能的公比:遍历数组中的每两个相邻的数,计算它们的比率,并将这些比率存储起来。 验证每个可能的公比:对于每一个可能的公比,检查是否存在一个初始值,使得所有数都能表示为这个初始值乘以公比的若干整数次幂。 选择最大公比:在所有满足条件的公比中,选择最大的那个,并将其化简为最简分数后输出。
发布日期:2021-05-12 17:10:50
浏览次数:22
分类:精选文章
本文共 2425 字,大约阅读时间需要 8 分钟。
为了解决这个问题,我们需要找到可能的最大等比值,并将其表示为最简分数。给定的奖金数构成一个等比数列,每一级的奖金数都是前一个的固定倍数。我们需要从这些数中推断出最大的可能的等比值。
方法思路
解决代码
import mathfrom fractions import Fractiondef main(): import sys input_data = sys.stdin.read().split() n = int(input_data[0]) X = list(map(int, input_data[1:n+1])) X.sort() if not X: print("0/1") return max_r = Fraction(0, 1) possible_rs = set() for i in range(len(X)): for j in range(i + 1, len(X)): x_j = X[j] x_i = X[i] if x_i == 0: continue r = Fraction(x_j, x_i) possible_rs.add(r) for r in possible_rs: a = X[0] valid = True for x in X: if a == 0: valid = False break y = Fraction(x, a) if y.denominator != 1: valid = False break if r == 0: if y.numerator != 0: valid = False continue if r == 1: continue try: k = y.log() / r.log() if not (abs(k - round(k)) < 1e-6): valid = False break k_round = round(k) if k_round < 0: valid = False break temp = Fraction(1, 1) for _ in range(k_round): temp *= r if temp > y: valid = False break if temp != y: valid = False except: valid = False break if valid: if r > max_r: max_r = r if max_r == 0: print("0/1") else: a = max_r.numerator b = max_r.denominator g = math.gcd(a, b) a //= g b //= g print(f"{a}/{b}")if __name__ == "__main__": main()
代码解释
通过这种方法,我们可以准确地找到可能的最大等比值,并将其以最简分数形式输出。
发表评论
最新留言
不错!
[***.144.177.141]2025年04月13日 03时47分59秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Remove Extra one 维护前缀最大最小值
2019-03-11
Linux命令 - pwd命令
2019-03-11
Mysql学习笔记
2019-03-11
最大的和
2019-03-11
跳台阶
2019-03-11
另类加法,走方格的方案数,最近公共祖先
2019-03-11
线程学习5
2019-03-11
[Java Path Finder][JPF学习笔记][7]JPF输出详细程度设置
2019-03-11
GitHub完整记录数据库GHTorrent的下载和安装经验
2019-03-11
SKLearn中SVM参数自动选择的最简单示例(使用GridSearchCV)
2019-03-11
设计模式—— 三:依赖倒置原则
2019-03-11
SpringBoot打包之后乱码
2019-03-11
因SGA分配错误无法启动数据库
2019-03-11
Oracle修改字段类型方法总结
2019-03-11
ORA-00020 超过当前最大连接数
2019-03-11
合理控制oracle数据库具有DBA权限的用户
2019-03-11
【Android】源码分析 - Activity启动流程
2019-03-11
喝红茶是否会上火
2019-03-11
数据请求结构和返回结构
2019-03-11
Android进阶解密读书笔记1——第1章:Android系统架构
2019-03-11