2021百度之星初赛一1004萌新
2021百度之星初赛一 HDOJ
(amod c=bmod c = p)
(a/c=x,b/c=y)
(cx+p=a,cy+p=b)
((x-y)c=a-b)
a-b为c的倍数,枚举a-b的因数,找到最小的因数输出,最大就是本身a-b。
c-1>0,因数c>1,c>=2。
特殊情况
- 如果a,b为1,无解。
- a-b=1,最小因数1,不满足c>=2,无解。
- 其他a=b情况,c>=2,最小因数2,最大本身。
#include <cstdio>
int main(){
int T,a,b;
int cha;
scanf("%d", &T);
while(T--){
scanf("%d%d", &a, &b);
if(a>b) cha = a - b;
else cha = b - a;
int x = cha;
int flag = 1;
if(cha > 1){
for (int i = 2; i <= x / i; i ++ )
if (x % i == 0){
while (x % i == 0) x /= i;
printf("%d %d
", i, cha);
flag = 0;
break;
}
if (x > 1 && flag) printf("%d %d
",x,cha);
}else if(a == 1 || cha == 1) printf("-1 -1
");
else printf("2 %d
", a);
}
return 0;
}