>>477
固定小数点演算にすればいいんじゃないの?

u_long sqrt2(u_long f)
{
  u_long s = f,t;
  if(x == 0) return 0;
  do {
    t = s;
    s = (t + f / t) >> 1;
  }while(s < t);
  return t;
}

int XY[M], b[N];
int x[N], y[N], z[N];
int xi, yi, zi;

for(int i = 0; i < 40000; i++) {
  xi = x[i]; yi = y[i]; zi = z[i]:
  for( int j = i+1; j < 40000; j++) {
    r = sqrt2( (xi-x[j])<<1 +
          (yi-y[j])<<1 +
          (zi-z[j])<<1  ) + 0.5;
    XY[r] += b[i]*b[j];
  }
}

sqrt2()関数はここから持ってきた。
 ttp://www.geocities.co.jp/SiliconValley-PaloAlto/5438/sqrt.htm