2020 CCPC-Wannafly Winter Camp Day3 Div.1&2——A 黑色气球【简单计算、签到题】

题目传送门


题目描述

小D面前有 {n}n 个黑色的气球。
假设第 {i}i 个黑色气球的高度是一个正整数 h i h_i hi,现在小D知道了任意两个不同气球的高度之和,你能帮小D还原出每个黑色气球的具体高度嘛?


输入描述:

第一行一个整数 n {n} n 接下来 n {n} n 行,每行 n {n} n 个整数,其中第 i {i} i 行第 j {j} j 个整数表示第 i {i} i 个气球和第 j {j} j 个气球的高度之和。(当 i = j {i=j} i=j 时这个数为 0 {0} 0)。
2 ≤ n ≤ 1000 2\le n\le 1000 2n1000 ,输入的每个数不超过 1 0 5 10^5 105 。数据保证答案唯一。


输出描述:

一行 n {n} n 个整数,表示答案。
保证答案唯一。


输入

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


题解

  • 简单公式推导,注意坑点, n = 2 n=2 n=2 时候,答案为 11 1 1 11

AC-Code

#include 

using namespace std;
typedef long long ll;
const int maxn = 1e3;
ll a[maxn+50];
int main(){
    int n;
    while(cin >> n){
        ll sum = 0;
        memset(a,0,sizeof a);
        for(int i = 0 ; i < n ; ++i){
            for(int j = 0 ; j < n ; ++j){
                int c;
                cin >> c;
                a[i] += c;
            }
            sum += a[i];
        }
        if(n == 2){
            cout << "1 1" << endl;
            continue;
        }
        sum /= (n-1)*2;
        for(int i = 0 ; i < n ; ++i)
            cout << (a[i] - sum) / (n-2) << " ";
    }
}

你可能感兴趣的:(2020 CCPC-Wannafly Winter Camp Day3 Div.1&2——A 黑色气球【简单计算、签到题】)