问题描述
空间中有n个球,这些球不相交也不相切。有m个可以视为质点的小生物,可能在某些球内,也可能在所有球之外,但不会在球面上。问这些生物从原来的地方逃逸到所有球外面的空间,至少要经过多少层球面。
输入格式
第一行两个数n、m:表示球的数量和小生物的数量;
接下来n行每行四个整数Xi、Yi、Zi和Ri:表示一个球的三维坐标和半径;
接下来m行每行三个整数Xi、Yi、Zi:表示一个生物的坐标。
输出格式
一行m个数:表示每个小生物逃逸时至少经过的球面数。
样例输入
2 2
0 0 0 2
0 0 0 4
0 0 1
0 0 3
样例输出
2 1
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
import org.omg.IOP.CodeSets;
public class Main {
public static void main(String [] args) {
Scanner scanner =new Scanner(System.in);
int n=scanner.nextInt();//球的数量
int m=scanner.nextInt();//小生物的数量
int nArray[][]=new int[n][4];
int mArray[][]=new int [m][3];
for(int i=0;i<n;i++) {
for(int j=0;j<4;j++)
nArray[i][j]=scanner.nextInt();
}
for(int i=0;i<m;i++) {
for(int j=0;j<3;j++)
mArray[i][j]=scanner.nextInt();
}
for(int i=0;i<m;i++) {
int count=0;
for(int j=0;j<n;j++) {
int k=2; int sum=0;
do {
sum+=(mArray[i][k]-nArray[j][k])*(mArray[i][k]-nArray[j][k]);
} while ((k--)>0);
if(sum<nArray[j][3]*nArray[j][3])
count++;
}
System.out.print(count+" ");
}
}
}