题解 CF1325A 【EhAb AnD gCd】

huayucaiji

2020-03-16 09:34:33

题解

首先,我们要来了解一些性质,以及 LCM 和 GCD 的一些特殊关联,我们从他们的定义入手:
首先,我们设:

a=\Pi_{i=1} p_i^{c_i},b=\Pi_{i=1} p_i^{d_i}

其中,p_i 代表质数。这样,我们就有:

gcd(a,b)=\Pi_{i=1} p_i^{\min(c_i,d_i)} lcm(a,b)=\Pi_{i=1} p_i^{\max(c_i,d_i)}

由于我们知道:对于任意两个数 x,y,都有 x+y=\min(X,y)+\max(x,y),因此:

a\cdot b=gcd(a,b)\cdot lcm(a,b)

所以对于这道题,我们知道了 gcd(a,b)+lcm(a,b)=x,而且 a\cdot b=gcd(a,b)\cdot lcm(a,b),所以当 a=1,b=x-1 时,这两个条件同时满足,所以只要输出 1,x-1 即可。

//#pragma GCC optimize("Ofast","-funroll-loops","-fdelete-null-pointer-checks")
//#pragma GCC target("ssse3","sse3","sse2","sse","avx2","avx")
#include<bits/stdc++.h>
using namespace std;

int read() {
    char ch=getchar();
    int f=1,x=0;
    while(ch<'0'||ch>'9') {
        f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9') {
        x=x*10+ch-'0';
        ch=getchar();
    }
    return f*x;
}

int n;

signed main() {

    int t;
    t=read();
    while(t--) {
        n=read();
        cout<<1<<" "<<n-1<<endl;
    } 
    return 0;
}