答案为
使用辗转相除法/更相减损术的多维形式,反正就是
的性质,从最后一项开始,减去前一项,得到上述等于
这相当于
是满足
最大的值,我们找出满足后面
个条件,即整除所有差分的值,即
,这就是答案,因为我们总能调整
使得
被刚才得出的值整除
#include <iostream>
#include <numeric>
#include <vector>
using namespace std;
void solve(){
int n;
cin >> n;
vector<int> a(n,0);
for(auto&v : a) cin >> v;
int ans = abs(a[1]-a[0]);
for(int i=2;i<n;i++){
ans=gcd(ans,a[i]-a[i-1]);
}
// g|(a[0]+k)
cout << ans << ' ' << ((ans==1)?0:((a[0]/ans+1)*ans-a[0]))<<'\n';
}
int main() {
solve();
}
// 64 位输出请用 printf("%lld")

京公网安备 11010502036488号