判断三个数 (无序) 是否构成等比序列
Python 实现判断三个数字是否成等比数列, 数字不一定按顺序给出. 因为只有三个数字, 所以采用特殊判断处理的方法.
判断三个数字是否成等比数列, 但数字不一定按顺序给出.
Python 实现. 因为只有三个数字, 所以特殊处理即可.
from typing import List
def is_dengbi(l: List[int]) -> bool:
'''
判断三个数字是否成等比数列
数字不一定按顺序给出
'''
assert len(l) == 3
def judge(l: List[int]) -> bool:
a, b, c = l
'''
三个数字成等比数列的条件: b / a == c / b
转换成乘法避免精度的问题: b * b == a * c
'''
return b * b == a * c
ltz = [] # 三个数中小于 0 的数
gtz = [] # 三个数中大于 0 的数
for val in l:
if val < 0:
ltz.append(val)
else:
gtz.append(val)
if len(ltz) == 3:
return judge(sorted([-val for val in l]))
elif len(ltz) == 2:
return judge([ltz[0], gtz[0], ltz[1]])
elif len(ltz) == 1:
return judge([gtz[0], ltz[0], gtz[1]])
else:
if l[0] == 0 and l[1] == 0 and l[2] == 0:
return True
else:
return judge(sorted(l))
调用代码:
s = input()
nums = [int(t) for t in s.split()]
if is_dengbi(nums):
print('YES')
else:
print('NO')
Last modified on 2022-07-10