2021百度之星初赛一1004萌新

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;
}
原文地址:https://www.cnblogs.com/swordgrass/p/15093928.html