2013
11-12

# Homogeneous Squares

Assume you have a square of size n that is divided into n × n positions just as a checkerboard. Two positions (x1, y1) and (x2, y2), where 1 ≤ x1, y1, x2, y2n, are called “independent” if they occupy different rows and different columns, that is, x1x2 and y1y2. More generally, n positions are called independent if they are pairwise independent. It follows that there are n! different ways to choose n independent positions.

Assume further that a number is written in each position of such an n × n square. This square is called “homogeneous” if the sum of the numbers written in n independent positions is the same, no matter how the positions are chosen. Write a program to determine if a given square is homogeneous!

The input contains several test cases.

The first line of each test case contains an integer n (1 ≤ n ≤ 1000). Each of the next n lines contains n numbers, separated by exactly one space character. Each number is an integer from the interval [−1000000, 1000000].

The last test case is followed by a zero.

For each test case output whether the specified square is homogeneous or not. Adhere to the format shown in the sample output.

2
1 2
3 4
3
1 3 4
8 6 -2
-3 4 0
0

homogeneous
not homogeneous

//* @author: 82638882@163.com
import java.io.*;
public class Main
{
public static void main(String[] args) throws IOException
{
while(true)
{
int a=Integer.parseInt(s);
if(a==0)break;
int[][] arr=new int[a][a];
String[] ss;
for(int i=0;i< a;i++)
{
for(int j=0;j< a;j++)
arr[i][j]=Integer.parseInt(ss[j]);
}
boolean bb=true;
for(int i=0;i< a-1;i++)
{
int k=arr[i][0]-arr[i+1][0];
for(int j=1;j< a;j++)
{
if(k!=arr[i][j]-arr[i+1][j])
{
bb=false;
break;
}
}
if(!bb)break;
}
System.out.println((bb?"":"not ")+"homogeneous");
}
}
}