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;
}
posted @ 2021-12-17 14:27  Eason_AC  阅读(72)  评论(0)    收藏  举报