CF1154A Restoring Three Numbers 题解
Content
已知有三个正整数 \(a,b,c\),现在给出 \(a+b,a+c,b+c,a+b+c\)(不保证有序)的值,试求出 \(a,b,c\)。
数据范围:\(2\leqslant a+b,a+c,b+c,a+b+c\leqslant 10^9\)。
Solution
肯定地,如果是无序的话,那么我们肯定要先对这四个值排序,得到:
\[\begin{cases}x_1=a+b\\x_2=a+c\\x_3=b+c\\x_4=a+b+c\end{cases}
\]
那么,运用加减消元,我们就可以得到:
\[\begin{cases}a=x_4-x_3\\b=x_4-x_2\\c=x_4-x_1\end{cases}
\]
直接输出这三个值就好了。
Code
int x[7];
int main() {
_for(i, 1, 4) getint(x[i]);
sort(x + 1, x + 5);
int a = x[4] - x[1], b = x[4] - x[2], c = x[4] - x[3];
writeint(a), putchar(' '), writeint(b), putchar(' '), writeint(c);
return 0;
}