用了二分法,来查找间隔。
样例已经过了。
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int n, a[1145141];
bool can(int k) {
for(int i=0; i<n; i++) {
if((a[i]-1)%k>0) return 0;
}
return 1;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(nullptr);
cin>>n;
for(int i=0; i<n; i++) cin>>a[i];
int l=1, r=a[n-1]-a[0]+1;
int mid;
while(l+1<r) {
mid=(l+r)>>1;
if(can(mid)) {
l=mid;
}else {
r=mid;
}
}
cout<<(a[n-1]-1)/l+1<<" "<<l;
return 0;
}