2021年百度程序设计竞赛

成为她曾经期待的样子 / 2023-08-01 / 原文

 

package PTACZW;
import java.util.Scanner;
import java.util.ArrayList;
import java.io.*;
import java.util.StringTokenizer;
public class Main{
    static BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
    static PrintWriter pw=new PrintWriter(new OutputStreamWriter(System.out));
    static StringTokenizer tokenizer=new StringTokenizer("");
    static String next() throws IOException {
        while (!tokenizer.hasMoreTokens()) {
            tokenizer = new StringTokenizer(reader.readLine());
        }
        return tokenizer.nextToken();
    }
    static int nextInt() throws IOException
    {
        return Integer.parseInt(next());
    }
    static double Double() throws IOException
    {
        return Double.parseDouble(next());
    }
    static long nextlong() throws IOException
    {
        return Long.parseLong(next());
    }
    public static void main(String[] args)throws IOException {
        ArrayList<Integer>list=new ArrayList<>();
        ArrayList<Integer>ans=new ArrayList<>();

        int n=nextInt();
        while(n-->0)
        {
            int a=nextInt();
            int b=nextInt();
            int maxans=0;
            int minans=0;
            if(a<=b)
            {
                int temp;
                temp=a;
                a=b;
                b=temp;
            }
            if(a>=b)
            {
                if(a==b)
                {
                    if(a==1)
                    {
                        list.add(-1);
                        list.add(-1);
                    }
                    else {
                        list.add(2);
                        list.add(a);
                    }
                }
                else {
                    list.add(fac(a-b));
                    list.add(a-b);
                    
                }
            }
            else if(a-b==1)
            {
                list.add(-1);
                list.add(-1);
            }
        }
        for(int i=0;i<list.size();i++)
        {
            if(list.get(i)<=1)
            {
                ans.add(-1);
            }
            else {
                ans.add(list.get(i));
            }
        }
        int cn=0;
        for(int i=0;i<ans.size();i++)
        {
            cn++;
            pw.print(ans.get(i)+" ");
            if(cn==2)
            {
                pw.println();
                cn=0;
            }
            
        }
        pw.flush();
    }
    public static int fac(int x)
    {
        if (x <= 1) {
            return 1; // 1 has no prime factors
        }

        for (int i = 2; i <= Math.sqrt(x); i++) {
            if (x % i == 0) {
                return i; // i is the smallest prime factor
            }
        }

        return x; // number itself is a prime number
    }
}