1. 寻找满足条件的整数X
有四个正整数A B C 和D找到一个正整数X(X>0) 使得 A=BX且C=DX如果不存在这样的X则返回-1
测试样例
样例1:
输入:s ="abc"输出:'aba
样例2:
输入:s ="cba"输出:'cac
样例3:
输入:s="aaa"输出:'-1
解答思路
- 检查B和D是否为0,因为除以0没有意义。
- 计算A除以B的结果,以及C除以D的结果。
- 检查这两个结果是否为整数,如果不是,则不存在这样的X,返回-1。
- 如果这两个结果相等,那么这个结果就是我们要找的X。
- 如果这两个结果不相等,那么不存在这样的X,返回-1。
Python代码
def solution(A: int, B: int, C: int, D: int) -> int:
# 检查B和D是否为0
if B == 0 or D == 0:
return -1
# 计算X的值
x1 = A // B
x2 = C // D
# 检查X是否为整数,并且两个X是否相等
if x1 == A / B and x2 == C / D and x1 == x2:
return x1
else:
return -1
if __name__ == '__main__':
print(solution(A = 4, B = 2, C = 6, D = 3) == 2)
print(solution(A = 8, B = 4, C = 15, D = 5) == -1)
print(solution(A = 9, B = 3, C = 12, D = 4) == 3)
2. 小M的37进制数字相乘问题
问题描述
小M最近在学习37进制的表示方法。37进制使用的字符集是:"8123456789ABCDEFGHIJKLMINOPQRSTUVWXYZab$,请你计算它们的乘积并输出结果,结果也需使用37进制表示。
测试样例
样例1:
输入:a ="Z",b)=“X”输出:'V8
样例2:
输入:a ="A",b ="B"输出:'2$
解题思路
- 转换为10进制:将两个37进制的数字
a和b转换为10进制。 - 乘法运算:计算这两个10进制数的乘积。
- 转换回37进制:将乘积转换回37进制,并返回结果。
代码实现
def solution(a: str, b: str) -> str:
# 37进制的字符集
base37_chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ$"
# 将37进制转换为10进制
def base37_to_decimal(num_str):
decimal = 0
for i, char in enumerate(num_str[::-1]):
decimal += base37_chars.index(char) * (37 ** i)
return decimal
# 将10进制转换为37进制
def decimal_to_base37(decimal):
if decimal == 0:
return '0'
base37_str = ''
while decimal > 0:
base37_str = base37_chars[decimal % 37] + base37_str
decimal //= 37
return base37_str
# 将a和b转换为10进制
decimal_a = base37_to_decimal(a)
decimal_b = base37_to_decimal(b)
# 计算乘积
product = decimal_a * decimal_b
# 将乘积转换回37进制
result = decimal_to_base37(product)
return result
if __name__ == '__main__':
print(solution("Z", "X") == 'V8') # 这里的输入应该是"Z"和"X",而不是"ZZ"和"X"
print(solution("A", "B") == '2$')