做题笔记:寻找满足条件的整数X
问题描述
小U 有四个正整数 A、B、C 和 D。你需要找到一个正整数 X(X > 0),使得 A = B * X 且 C = D * X。如果不存在这样的 X,则返回 -1。
测试样例
样例1:
输入:
A = 4, B = 2, C = 6, D = 3
输出:2
样例2:
输入:
A = 8, B = 4, C = 15, D = 5
输出:-1
样例3:
输入:
A = 9, B = 3, C = 12, D = 4
输出:3
问题分析
需要找到一个正整数 X,使得 A = B * X 且 C = D * X。如果不存在这样的 X,则返回 -1。
解题思路
-
整除性检查:
- 首先,检查
A是否能被B整除,以及C是否能被D整除。如果其中任何一个不能整除,那么就不存在这样的X,直接返回-1。
- 首先,检查
-
计算
X:- 如果
A能被B整除,计算X1 = A // B。 - 如果
C能被D整除,计算X2 = C // D。
- 如果
-
比较
X1和X2:- 如果
X1和X2相等,那么这个值就是我们要找的X。 - 如果
X1和X2不相等,那么就不存在这样的X,返回-1。
- 如果
数据结构选择
- 这个问题不需要复杂的数据结构,只需要基本的整数运算和条件判断。
算法步骤
- 检查
A % B是否等于 0,如果不等于 0,返回-1。 - 检查
C % D是否等于 0,如果不等于 0,返回-1。 - 计算
X1 = A // B和X2 = C // D。 - 比较
X1和X2,如果相等,返回X1,否则返回-1。
实现代码
def solution(A, B, C, D):
# 检查 A 是否能被 B 整除
if A % B != 0:
return -1
# 检查 C 是否能被 D 整除
if C % D != 0:
return -1
# 计算 X1 和 X2
X1 = A // B
X2 = C // D
# 检查 X1 和 X2 是否相等
if X1 == X2:
return X1
else:
return -1
# 测试样例
print(solution(4, 2, 6, 3)) # 输出:2
print(solution(8, 4, 15, 5)) # 输出:-1
print(solution(9, 3, 12, 4)) # 输出:3
总结
-
问题理解:
- 你需要找到一个正整数
X,使得A = B * X且C = D * X。如果不存在这样的X,则返回-1。
- 你需要找到一个正整数
-
关键点:
- 整除性检查:首先检查
A是否能被B整除,以及C是否能被D整除。如果其中任何一个不能被整除,那么就不存在满足条件的X,直接返回-1。 - 计算
X:如果A能被B整除,计算X1 = A // B。如果C能被D整除,计算X2 = C // D。 - 比较
X1和X2:如果X1和X2相等,那么这个值就是满足条件的X,返回这个值。如果X1和X2不相等,那么不存在满足条件的X,返回-1。
- 整除性检查:首先检查
-
数据结构与算法:
- 这个问题不需要复杂的数据结构,只需要基本的整数运算和比较操作。
- 算法步骤包括输入检查、计算
X1和X2、以及比较X1和X2