# A Linear Algebra Problem

##### Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)

Submit Status

God Kufeng is the God of Math. However, Kufeng is not so skilled with linear algebra, especially when dealing with matrixes.

One day, Captain Chen has a problem with matrix, here is the problem:

Given a n×n matrix A, what is the solution of n×n matrix X for the equation AX+XA=2A?

Captain Chen is a nice Captain, he wants to solve the equation only when A is a diagonal matrix, which means Aij=0 holds for all i≠j .

“That’s easy!” says Kufeng, “the answer is simply X=I, when I is the Identity Matrix.”

“But… is it the only solution for the equation above?” Captain Chen asks.

Kufeng cannot answer this question, can you help him?

## Input

The first line of input is a number n, giving the size of matrix A and X. (1≤n≤1000)

Then comes a single line with n numbers, x1,x2,?,xn, where xi is the value of Aii. (−10000≤xi≤10000)

## Output

If the answer is unique, output UNIQUE, otherwise output NOT UNIQUE

## Sample input and output

Sample Input Sample Output
3
1 2 3
UNIQUE
2
1 -1
NOT UNIQUE

## Hint

For the second sample input, A=(100−1), there can be more than one possible solutions for X, for example, X=(1001) and X=(1101) both satisfy the equation, so the answer is not unique.

给你一个n维的对角矩阵A,然后有一个n维的矩阵X，使得AX+XA=2A的等式成立的条件下，要让X唯一，那么A应该满足什么样的条件？

刚读完题目后，以为是个找规律的题目，但是一想，还是错了，其实就是简单的矩阵推导了。

首先，对于单位阵X，那么一定有AX+XA=2A成立。现在来考虑，一般的情况。

令2A=B，那么，B[i,i] = A[i,i]*X[i,i]+X[i,i]*A[i,i] = 2*A[i,i]*X[i,i] = 2*A[i,i] ->如果要使X唯一，那么A[i,i]!=0.

B[i,j] = A[i,i]*X[i,j]+X[i,j]*A[j,j] = X[i,j]*(A[i,i]+A[j,j])=0 要使得X唯一，那么(A[i,i]+A[j,j])!=0.

这样一来，我们就发现了，在A的对角线上的元素不能有0和互为相反数的数了。

# include<cstdio>
# include<iostream>
# include<algorithm>

using namespace std;

# define MAX 1000+4

int a[MAX];

int main(void)
{
int n;cin>>n;
int flag = 0;
for ( int i = 0;i < n;i++ )
{
cin>>a[i];
if ( a[i]==0 )
{
flag = 1;
}
}
if ( !flag )
{
sort(a,a+n);
for ( int i = 0;i < n;i++ )
{
if ( a[i]>0||flag == 1 )
break;
for ( int j = n-1;j >= i;j-- )
{
if ( a[j]+a[i]==0 )
{
flag = 1;
break;
}
else if ( a[j] < 0 )
break;
else
continue;
}

}
}
if ( flag )
cout<<"NOT UNIQUE"<<endl;
else
cout<<"UNIQUE"<<endl;

return 0;
}


## 《Linear Algebra and Its Applications》- 线性方程组 ## 《Linear Algebra and Its Applications》-矩阵运算 