Description
给定\(n\),求构造\(x + y + z = n\),其中\(x \gt y \gt z \gt 0\),要求\(x\)尽可能小,答案输出\(y, x, z\)。
Constraints
\(6 \le n \le 10^5\)
Solution
很显然要将三个数往\(n/3\)靠拢。观察\(n \% 3 = m\)的情况,在总和上补齐\(m\)即可,解法不唯一。
Code
#include <bits/stdc++.h>
using namespace std;
int main() {
int t; cin >> t;
while(t--) {
int n; cin >> n;
int x, y, z;
if(n % 3 == 0) {
x = n / 3 + 1;
y = n / 3;
z = n / 3 - 1;
} else if(n % 3 == 1) {
x = n / 3 + 2;
y = n / 3;
z = n / 3 - 1;
} else {
x = n / 3 + 2;
y = n / 3 + 1;
z = n / 3 - 1;
}
cout << y << ' ' << x << ' ' << z << endl;
}
}