如何解决如果我们已经知道 GCD(a, b),我们如何找到 GCD(k + a, k + b)?
我想知道是否可以在恒定时间内计算上述目标。我需要它来解决 codechef 上的问题。
解决方法
仅知道 gcd(a+k,b+k)
不可能在恒定时间内计算 gcd(a,b)
。
假设 c,d
是任意两个带有 d < c
的自然数。
让
a = d - d = 0
b = c - d
k = d
然后我们在 O(1)
时间知道
gcd(a,b) = gcd(0,c - d) = c - d
如果我们可以在 gcd(a+k,b+k) = gcd(c,d)
额外的时间内计算 O(1)
,那么我们可以在 O(1)
时间内计算所有 gcd,这是不可能的。
说了这么多,当然,在某些感兴趣的情况下,gcd(a,b)
的知识可能会导致 gcd(a+k,b+k)
的计算速度比其他方式更快。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。