我们可以把该题分为两个模块:如何通过给定的数组,算出得到最大公约数 g如何根据 g 或者 直接 求出k对于问题1,我们不难发现当 g | (ai + k) 且 g | (aj + k) 时, g | (ai+k) - (aj+k) = g | (ai-aj)前者为mg,后者为ng,最后两者相减为 (
展开全文
自己一直用gcd函数,原理都快不记得了,现在写这篇博客来复习一下。比如找200和90的GCD最暴力的办法是一个for循环从2到89,找到最大的i使得200%i==0且90%i==0.上面的办法在时间效率很慢,复杂度为O(n)。下面讲一下辗转相除法的原理。还是200和90为例。先贴个代码。 int G
展开全文