E-猫猫与数学_牛客小白月赛71(重现赛) (nowcoder.com)
题意:
思路:
首先考虑题目给出的条件里可以操作的地方(特殊性质)
gcd
1e14
对于gcd,既然它不为1,那么我们就可以设它为p
然后gcd(a+c,b+c),很容易想到更相减损法来处理
对于1e14这个特殊范围,一般都是去枚举因子
具体做法如下:
Code:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a,b;
int main(){
cin>>a>>b;
if(a==b){
if(a==1){
cout<<"1";
}
else{
cout<<"0";
}
return 0;
}
if(a>b)swap(a,b);
if(b-a==1)cout<<"-1";
else{
if(__gcd(a,b)>=2){
cout<<"0";
}
else{
ll x=b-a;
ll res=1e18;
map<ll,ll>mp;
for(ll i=1;i*i<=x;i++){
if(x%i==0){
mp[i]++;
if(x/i!=i)mp[x/i]++;
}
}
for(auto &c:mp){
ll x=c.first;
if(x==1)continue;
res=min(res,(x-a%x)%x);
}
cout<<res;
}
}
return 0;
}