寻找满足条件的整数X| 豆包MarsCode AI 刷题

46 阅读3分钟

做题笔记:寻找满足条件的整数X

问题描述

小U 有四个正整数 ABC 和 D。你需要找到一个正整数 XX > 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

解题思路

  1. 整除性检查

    • 首先,检查 A 是否能被 B 整除,以及 C 是否能被 D 整除。如果其中任何一个不能整除,那么就不存在这样的 X,直接返回 -1
  2. 计算 X

    • 如果 A 能被 B 整除,计算 X1 = A // B
    • 如果 C 能被 D 整除,计算 X2 = C // D
  3. 比较 X1 和 X2

    • 如果 X1 和 X2 相等,那么这个值就是我们要找的 X
    • 如果 X1 和 X2 不相等,那么就不存在这样的 X,返回 -1

数据结构选择

  • 这个问题不需要复杂的数据结构,只需要基本的整数运算和条件判断。

算法步骤

  1. 检查 A % B 是否等于 0,如果不等于 0,返回 -1
  2. 检查 C % D 是否等于 0,如果不等于 0,返回 -1
  3. 计算 X1 = A // B 和 X2 = C // D
  4. 比较 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

总结

  1. 问题理解

    • 你需要找到一个正整数 X,使得 A = B * X 且 C = D * X。如果不存在这样的 X,则返回 -1
  2. 关键点

    • 整除性检查:首先检查 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
  3. 数据结构与算法

    • 这个问题不需要复杂的数据结构,只需要基本的整数运算和比较操作。
    • 算法步骤包括输入检查、计算 X1 和 X2、以及比较 X1 和 X2