2020 CCPC-Wannafly Winter Camp Day3 Div.1&2(A 黑色氣球)(解方程)

2020 CCPC-Wannafly Winter Camp Day3 Div.1&2(A 黑色氣球)(解方程)

時間限制:C/C++ 1秒,其他語言2秒
空間限制:C/C++ 262144K,其他語言524288K
64bit IO Format: %lld

題目描述

小D面前有 n{n} 個黑色的氣球。
假設第 i{i} 個黑色氣球的高度是一個正整數 hih_i ,現在小D知道了任意兩個不同氣球的高度之和,你能幫小D還原出每個黑色氣球的具體高度嘛?

輸入描述:

第一行一個整數 n{n}
接下來 n{n} 行,每行 n{n} 個整數,其中第 i{i} 行第 j{j} 個整數表示第 i{i} 個氣球和第 j{j} 個氣球的高度之和。(當 i=j{i=j} 時這個數爲 0{0})。
2n10002\le n\le 1000,輸入的每個數不超過 10510^5 。數據保證答案唯一。

輸出描述:

一行 n{n} 個整數,表示答案。
保證答案唯一。

示例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;
}
發佈了179 篇原創文章 · 獲贊 56 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章