|
发表于 2025-4-19 12:39:11
|
显示全部楼层
解答
首先将输入的三个数约分为最简整数比,然后遍历可能的倍数k,生成对应的三个三位数,并检查这些数是否满足条件。
- import math
- a, b, c = map(int, input().split())
- # 检查输入合法性
- if a <= 0 or b <= 0 or c <= 0:
- print("No!!!")
- exit()
- # 约分为最简整数比
- d = math.gcd(math.gcd(a, b), c)
- a1, b1, c1 = a // d, b // d, c // d
- # 检查约分后的数是否合法
- if a1 <= 0 or b1 <= 0 or c1 <= 0:
- print("No!!!")
- exit()
- # 计算k的合法范围
- min_k = max((100 + a1 - 1) // a1, (100 + b1 - 1) // b1, (100 + c1 - 1) // c1)
- max_k = min(999 // a1, 999 // b1, 999 // c1)
- if min_k > max_k:
- print("No!!!")
- exit()
- solutions = []
- for k in range(min_k, max_k + 1):
- x = a1 * k
- y = b1 * k
- z = c1 * k
- nums = f"{x}{y}{z}"
-
- # 检查数字是否合法
- if len(nums) != 9 or '0' in nums or len(set(nums)) != 9:
- continue
- solutions.append((x, y, z))
- # 输出结果
- if not solutions:
- print("No!!!")
- else:
- for sol in sorted(solutions):
- print(f"{sol[0]} {sol[1]} {sol[2]}")
复制代码
关键思路:
1. 将输入比例约分为最简形式。
2. 计算可能的倍数范围,使三个数均为三位数。
3. 遍历所有可能的倍数,生成对应的三个数。
4. 检查这些数是否满足数字不重复且包含1-9的条件。
5. 按格式输出结果或"No!!!"。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|