C. Non-coprime Split

首先,在这道题中,我们首先要把区间内的数字分为两类,包含偶数的区间和不包含偶数的区间。

1、包含偶数的区间,我们中需要令a=2,b=i-2。即可符合题意。

2、不包含偶数的区间,即只有一个奇数。那么我们要再次分类讨论,若该奇数为质数,贼输出-1;否则拆出它的两个因子(相乘为i)进行化简即可。

主要代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
//    freopen("input.txt","r",stdin);
//    freopen("output.txt","w",stdout);
    int t;
    cin>>t;
    while (t--){
        int l,r;
        cin>>l>>r;
        bool bol=true;
        for (int i=l;i<=r;i++){
            if (i%2==0 & i!=2){
                printf("%d %d\n",2,i-2);
                bol=false;
                break;
            }
            else {
                int s=sqrt(i);
                for (int j=3;j<=s;j+=2)
                    if (i%j==0) {
                        printf("%d %d\n",i/j,i/j*(j-1));
                        bol=false;
                        break;
                    }
            }
            if (bol==false) break;
        }
        if (bol) printf("-1\n");
    }
    return 0;
}

 

posted @ 2024-01-27 12:56  黑屿白  阅读(24)  评论(0)    收藏  举报