区间内最远互质点对
AT_arc137_a [ARC137A] Coprime Pair - 洛谷
题目:
思路:
我们可以枚举 x 以及区间长度 len,那么 y 就是 x + len,如果有 gcd(x,y) = 1,那么就可以直接输出答案了,时间复杂度看似为 O(len²),但实则不然
具体的证明可看洛谷评论区,be like
https://en.wikipedia.org/wiki/Prime_gap
代码:
#include <iostream>
#include <algorithm>
#include<cstring>
#include <iomanip>
#include<cctype>
#include<string>
#include <set>
#include <vector>
#include <cmath>
#include <queue>
#include <unordered_set>
#include <map>
#include <unordered_map>
#include <stack>
#include <utility>
#include <array>
#include <tuple>
using namespace std;
#define int long long
#define yes cout << "YES" << endl
#define no cout << "NO" << endlint gcd(int a, int b)
{return !b ? a : gcd(b, a % b);
}void solve()
{int l, r;cin >> l >> r;int len = r - l;while (len){for (int i = l; i <= r - len; i++){if (gcd(i,i + len) == 1){cout << len << endl;return;}}len--;}
}
signed main()
{//cin.tie(0)->sync_with_stdio(false);int t = 1;//cin >> t;while (t--){solve();}return 0;
}