2020 CCPC-Wannafly Winter Camp Day3 Div.1&2(A 黑色气球)(解方程)
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
小D面前有
个黑色的气球。
假设第
个黑色气球的高度是一个正整数
,现在小D知道了任意两个不同气球的高度之和,你能帮小D还原出每个黑色气球的具体高度嘛?
输入描述:
第一行一个整数
接下来
行,每行
个整数,其中第
行第
个整数表示第
个气球和第
个气球的高度之和。(当
时这个数为
)。
,输入的每个数不超过
。数据保证答案唯一。
输出描述:
一行
个整数,表示答案。
保证答案唯一。
示例1
输入
5
0 3 4 5 6
3 0 5 6 7
4 5 0 7 8
5 6 7 0 9
6 7 8 9 0
输出
1 2 3 4 5
题解
解方程即可,不过有一个巧妙的解法:
先利用前三条方程解出第一项的值,再利用与第一条有关的方程接触相关项即可。
代码
#include<stdio.h>
int main() {
int n, i, j, x, h1;
scanf("%d", &n);
int a[1001][1001];
for (i = 1; i <= n; i++)
for (j = 1; j <= n; j++)
scanf("%d", &a[i][j]);
x = a[2][3] - a[1][2];
h1 = (a[1][3] - x) / 2;
printf("%d ", h1);
for (i = 2; i <= n; i++)
printf("%d ", a[1][i] - h1);
return 0;
}