UVA10407 题解
思路分析
我们设每一个数为 ai,且有 ai=biqi+ri(0<r<bi)。在题目中,bi 与 ri 一定,于是令bi 与 ri 分别为 b 和 r。
为抵消 r 并得到有关整除的相关信息,我们设有 ak≥ak−1,计算 ak−ak−1。得到 ak−ak−1=b(qk−qk−1),所以有 b∣(ak−ak−1)。由于所有的 ak 和 ak−1 都要满足,所以,求所有 ak−ak−1 的最大公因数即可,这个即为答案。注意要满足 ak≥ak−1,所以要进行排序。
关键代码
sort(a + 1, a + cur + 1);
int ans = a[cur] - a[cur - 1];
for(int i = cur - 1;i >= 2;i--)
{
ans = __gcd(ans, a[i] - a[i - 1]);
}
cout << ans << endl;