Menji 和 gcd
题目描述
Menji 喜欢最大公约数,特别是最大公约数大的正整数对。
令 gcd(x,y) 表示 x,y 的最大公约数,多次给定 L,R,保证 L<R,求。
输入
第一行一个正整数 T(1≤T≤10),表示数据组数。
之后 T 行,每行两个正整数 L,R(1≤L<R≤1012),表示一组询问。输出
对于每个询问 L,R,输出一行一个正整数
样例输入
复制
10 1 2 2 4 6 10 11 21 147 154 1470 1540 2890 3028 998244353 1000000007 34827364537 41029384775 147147147147 154154154154
样例输出
复制
1 2 3 7 7 70 126 1754385 5861340682 7007007007
代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;ll solve()
{ll l,r;cin>>l>>r;ll diff=r-l;//最大不超过这个值ll ans=0;for(ll i=r/diff;;i++){ans=r/i;if(i*ans-ans>=l)return ans;}return 0;
}int main()
{int t;cin>>t;while(t--)cout<<solve()<<'\n'; return 0;
}