本文共 1334 字,大约阅读时间需要 4 分钟。
为了解决这个问题,我们需要找到一个实数dd,使得由数组a和b生成的新数组cc中的零的数量最大化。每个元素ci = d × ai + bi,我们需要选择d使得尽可能多的ci为零。
import mathfrom collections import defaultdictn = int(input())a = list(map(int, input().split()))b = list(map(int, input().split()))cnt = 0d_counts = defaultdict(int)for i in range(n): ai = a[i] bi = b[i] if ai == 0: if bi == 0: cnt += 1 continue else: numerator = -bi denominator = ai gcd_val = math.gcd(abs(numerator), abs(denominator)) numerator //= gcd_val denominator //= gcd_val if denominator < 0: numerator = -numerator denominator = -denominator key = (numerator, denominator) d_counts[key] += 1max_count = 0for count in d_counts.values(): if count > max_count: max_count = countprint(max_count + cnt)
这种方法确保了我们高效地找到最优的d,使得生成的数组cc中的零的数量最大化。
转载地址:http://pldt.baihongyu.com/