玄关求调
  • 板块题目总版
  • 楼主c_legg
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/1/20 16:33
  • 上次更新2025/1/20 19:47:45
查看原帖
玄关求调
1054383
c_legg楼主2025/1/20 16:33

这题

用了二分法,来查找间隔。

样例已经过了。

#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;
}
2025/1/20 16:33
加载中...