1036: 小希的数表
时间限制: 1 Sec 内存限制: 128 MB提交: 417 解决: 283
[提交][状态][讨论版]
题目描述
输入
假设输入保证解的存在性和唯一性。
输出
样例输入
4
4 5 7 10 12 13
4
5 6 7 8 9 10
0
样例输出
1 3 4 9 2 3 4 6
#include<iostream>
#include<vector>
using namespace std;
int solve(int x,int s2,int s1){
if((x+s2-s1)%2==0){
return (x+s2-s1)/2;
}
else
return 0;
}
int main(){
for(;;){
int n;
cin>>n;
if(n==0)break;
else{
int a[n];
vector<int> s(n*(n-1)/2);
for(int i=0;i<n*(n-1)/2;i++){
cin>>s[i];
}
for(int i=2;i<n*(n-1)/2;i++){
if(solve(s[i],s[1],s[0])!=0){
a[2]=solve(s[i],s[1],s[0]);
s[i]=0;
break;
}
}
a[1]=s[0]-s[1]+a[2];
a[0]=s[0]-a[1];
s[0]=0;s[1]=0;
int j=2;
for(int i=3;i<n;i++){
for(int j=2;j<n*(n-1)/2;j++){
if(s[j]!=0){
a[i]=s[j]-a[0];}
for(int k=0;k<i;k++){
for(int q=0;q<n*(n-1)/2;q++){
if(s[q]==a[i]+a[k]){
s[q]=0;
}
}
}
}
}
for(int i=0;i<n;i++){
if(i==0)
cout<<a[i];
else
cout<<" "<<a[i];
}
cout<<endl;
}
}
return 0;
}