In recreational mathematics, a magic square of n-degree is an arrangement of n 2 numbers, distinct integers, in a square, such that the n numbers in all rows, all columns, and both diagonals sum to the same constant. For example, the picture below shows a 3-degree magic square using the integers of 1 to 9.
Given a finished number square, we need you to judge whether it is a magic square.
Input
The input contains multiple test cases.
The first line of each case stands an only integer N (0 < N < 10), indicating the degree of the number square and then N lines follows, with N positive integers in each line to describe the number square. All the numbers in the input do not exceed 1000.
A case with N = 0 denotes the end of input, which should not be processed.
Output
For each test case, print "Yes" if it's a magic square in a single line, otherwise print "No".
Sample Input
2 1 2 3 4 2 4 4 4 4 3 8 1 6 3 5 7 4 9 2 4 16 9 6 3 5 4 15 10 11 14 1 8 2 7 12 13 0
Sample Output
No No Yes Yes
#include"cstdio"
#include"iostream"
#include"cstring"
#include"algorithm"
using namespace std;
int main()
{
int n , xx[11][11] , yy[31] , zz[1002];
while(cin>>n,n)
{
memset(xx,0,sizeof(xx));
memset(yy,0,sizeof(yy));
memset(zz,0,sizeof(zz));
int a = 0 , b = 0 , c = 0 , d = 0;
for(int i = 0 ; i < n ; i ++)
{
for(int j = 0 ; j < n ; j ++)
{
cin>>xx[i][j];
if(i == j)
a += xx[i][j];
if(i + j == n - 1)
b += xx[i][j];
yy[i] += xx[i][j];
yy[j + n] += xx[i][j];
zz[xx[i][j]]++;
}
}
for(int i = 1 ; i <= 1000 ; i ++)
{
if(zz[i] > 1)
{
d = 1;
cout<<"No"<