1004 萌新
分析:特判两数相等,相差为1和都为1的情况,其余情况中最大的c为abs(b-a),最小的c为abs(b-a)的最小因子
代码如下:
#include<bits/stdc++.h>
#define mod 1000000007
#define INF 0x3f3f3f3f
typedef long long ll;
using namespace std;
inline ll read(){
ll num=0,neg=1;char c=getchar();
while(!isdigit(c)){if(c=='-')neg=-1;c=getchar();}
while(isdigit(c)){num=(num<<3)+(num<<1)+c-'0';c=getchar();}
return num*neg;
}
int gcd(int a,int b)
{
for(ll i=2;i*i<=b-a;++i)
{
if((b-a)%i==0)return i;
}
return -1;
}
int main()
{
int t,c;
t=read();
while(t--)
{
ll a,b;
a=read();
b=read();
if(a>b)swap(a,b);
if(b-a==1||(a==1&&b==1)){
printf("-1 -1\n");
}
else {
if(a==b){
printf("%d %d\n",2,a);
continue;
}
if(gcd(a,b)==-1)
printf("%d %d\n",b-a,b-a);
else
printf("%d %d\n",gcd(a,b),b-a);
}
}
return 0;
}
京公网安备 11010502036488号