Python题解(快要玉碎了)
2025-04-08 21:37:23
发布于:浙江
0阅读
0回复
0点赞
def factor(n):
factors = {}
while n % 2 == 0:
factors = factors.get(2, 0) + 1
n = n // 2
i = 3
while i * i <= n:
while n % i == 0:
factors[i] = factors.get(i, 0) + 1
n = n // i
i += 2
if n > 2:
factors[n] = 1
return factors
def main():
import sys
input = sys.stdin.read().split()
ptr = 0
n = int(input[ptr])
ptr += 1
m1 = int(input[ptr])
ptr += 1
m2 = int(input[ptr])
ptr += 1
s_list = list(map(int, input[ptr:ptr + n]))
if m1 == 1:
print(0)
return
factors_m1 = factor(m1)
factors_M = {}
for p in factors_m1:
factors_M[p] = factors_m1[p] * m2
required_primes = factors_M.keys()
min_time = float('inf')
for s in s_list:
factors_s = factor(s)
# Check if all required primes are present
valid = True
for p in required_primes:
if p not in factors_s:
valid = False
break
if not valid:
continue
current_max = 0
for p in required_primes:
k_p = factors_M[p]
s_p = factors_s[p]
t_p = (k_p + s_p - 1) // s_p
if t_p > current_max:
current_max = t_p
if current_max < min_time:
min_time = current_max
if min_time == float('inf'):
print(-1)
else:
print(min_time)
if name == 'main':
main()
这里空空如也
有帮助,赞一个