2020 CCPC-Wannaflyウィンターキャンプ3日目Div.1&2(バルーンブラック)(式ソリューション)

2020 CCPC-Wannaflyウィンターキャンプ3日目Div.1&2(バルーンブラック)(式ソリューション)

制限時間:C / C ++ 1秒、2秒言語、他の
スペースの制限:C / C ++ 262144K、他の言語524288K
64ビットIOフォーマット:LLDの%

タイトル説明

そこ小さなDの前で n個 {N} 黒の風船。
最初の仮説 {私} 高い黒バルーンは正の整数であります 時間 こんにちは 、小Dは現在、高さの異なる任意の二つのバルーンことを知っている、あなたは、各バルーン黒いものの特定の高さを復元するために小さなDを助けますか?

説明を入力します。

整数の最初の行 n個 {N}
n個 {N} の行 n個 {N} 整数で、最初の {私} ライン J {J} 整数を表し、 {私} 風船や J {J} 高さとバルーン。(とき = J {I = J} この数がある場合には 0 {0} )。
2 n個 1000年 2 \ nは\ 1000年 、入力のそれぞれは、の数を超えません 1 0 5 10 ^ 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

問題の解決策

方程式を解くが、独創的な解決策がありますするには:

最初に使用する前に、第一項の3つの式、最初の方程式との接触に関連する項目の再利用。

コード

#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;
}
公開された163元の記事 ウォン称賛54 ビュー30000 +

おすすめ

転載: blog.csdn.net/weixin_42856843/article/details/104072439