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.
Input
Output
Sample Input
Sample Output
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最开始没读到输入的数不能相等,WA了几次,其他都是找规律了;代码:
#include"stdio.h"
#include"string.h"
int a[25],b[11][11],n,j;
void zon()
{
for(int i = 0;i < n;i ++)
{
int he=0;
for(int k = 0;k < n;k ++)
{
he+=b[k][i];
}
a[j]=he;
j++;
}
}
void hen()
{
for(int i = 0;i < n;i ++)
{
int he=0;
for(int k = 0;k < n;k ++)
{
he+=b[i][k];
}
a[j]=he;
j++;
}
}
void xie()
{
int x=2;
int he=0;
for(int i = 0;i < n;i ++)
{
for(int k = 0;k < n;k ++)
{
if(i == k)
{
he+=b[i][k];
}
}
}
a[j]=he;
he=0;
j++;
for(int i = 0;i < n;i ++)
{
for(int k = 0;k < n;k ++)
{
if(i + k == n-1)
{
he+=b[i][k];
}
}
}
a[j]=he;
}
int main()
{
while(~scanf("%d",&n) && n)
{
int X=0;
for(int i = 0;i < n;i ++)
{
for(int k = 0;k < n;k ++)
{
scanf("%d",&b[i][k]);
for(int I = 0;I <= i;I ++)
{
for(int K = 0;K < k;K ++)
{
if(b[I][K]==b[i][k])
{
X=1;
}
}
}
}
}
if(X)
{
printf("No\n");
continue;
}
j=0;
zon();
hen();
xie();
int flag = 0;
for(int i = 0;i <= j;i ++)
{
// printf("a[i]==%d\n",a[i]);
if(a[i]!=a[0])
{
flag=1;
}
}
if(flag)
{
printf("No\n");
}
else
{
printf("Yes\n");
}
}
return 0;
}