4.15携程笔试2题
// 1 <= n <= 1e9 #include <bits/stdc++.h> using namespace std; long long x; int main(){ cin >> x; //a * b = gcd(a,b)*lcm(a,b) 当两个数gcd为1时,lcm最大,且为两个数的乘积;又两个数越接近,乘积越大。 if(x & 1){ //连续的两个正整数互质,即gcd为1. cout << x / 2 << " " << x / 2 + 1; } else{ long long a = x / 2 , b = x - a; //找到gcd为1互质的两个数 while(gcd(a, b) != 1) a--, b++; cout << a << " " << b; } return 0; }