题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2515
思路:将数表中的数存放在a数组中
先算出第一个数,然后用0~n-2个数表中的数依次算出剩下的n-1个数,
计算第一个数的方法有很多,大致意思是找出三个数表中的数联立方程算出第一个数,我这里用的是(a[0]+a[1]-a[n-1])/2
==>(num1+num2+num1+num3-(num2+num3))/2;
代码如下:
#include<cstdio>
int main() {
int n,t,num1,a[1350];
while(~scanf("%d",&n)) {
t=n*(n-1)/2;
for(int i=0; i<t; i++)
scanf("%d",&a[i]);
num1=(a[0]+a[1]-a[n-1])/2;
printf("%d\n",num1);
for(int i=0; i<n-1; i++)
printf("%d\n",a[i]-num1);
}
}