当前位置: 代码迷 >> 综合 >> 2020 CCPC-Wannafly Winter Camp Day3 Div.12——A 黑色气球【简单计算、签到题】
  详细解决方案

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

热度:57   发布时间:2023-12-16 22:55:06.0

题目传送门


题目描述

小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 <bits/stdc++.h>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) << " ";}
}