2021百度之星初赛一
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; }