题解 | 游游的最小公倍数
游游的最小公倍数
https://www.nowcoder.com/practice/385c7aa397e54bb58f36286ab0d65156
#pragma GCC optimize(1) #pragma GCC optimize(2) #pragma GCC optimize(3,"Ofast","inline") #include<bits/stdc++.h> using namespace std; const static void fast_io() {// ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); } #define LF(x) fixed<<setprecision(x) #define endl '\n' #define all(x) x.begin(),x.end() #define vi vector<int> #define int long long using ll = long long; using db = double; using pii = pair<int, int>; void solve() { int n; cin >> n; // 如果是 奇数 就比较好办 if (n % 2) cout << n / 2 << ' ' << n / 2 + 1 << "\n"; else { int k = n / 2; int i = k, j = k; // 如果是 偶数的话 就需要考虑 他们的最大公约数了 最好保证最大公约数==1 不然 就会有2这个因子 // 为了保证 gcd = 1 在外面一层加个 循环 防止出现 25 25 -》 但实际上 最理想的情况是 23 27 while (i >= 1 && j < n) { if (__gcd(i, j) == 1) { cout << i << ' ' << j << "\n"; return ; } else { i--; j++; } } } } signed main() { fast_io(); int T = 1; cin >> T; while (T--) solve(); return 0; }