#include <stdio.h>
double x[10], mass[10];
double left = 0, right = 0;
int i, N;
int main() {
freopen("input.txt", "r", stdin);
int T, n;
scanf("%d", &T);
for (int t = 1; t <= T; t++) {
printf("#%d", t);
scanf("%d", &N);
for (i = 0; i < N; i++) {
scanf("%d", &n);
x[i] = n;
}
for (i = 0; i < N; i++) {
scanf("%d", &n);
mass[i] = n;
}
for (i = 0; i < N - 1; i++) {
double start = x[i], end = x[i + 1];
while (start<end) {
double balance = (start + end) / 2.0;
left = 0, right = 0;
for (int j = 0; j <= i; j++) {
double d = balance - x[j];
left += mass[j] / (d*d);
}
for (int j = i + 1; j <= N - 1; j++) {
double d = balance - x[j];
right += mass[j] / (d*d);
}
if (left > right) start = balance; /// 오른쪽으로 더 가야될때
else end = balance; /// 왼쪽으로 더 가야할때
double z = balance - (start + end) / 2.0;
if (z < 0)
z *= -1;
if (z <= 0.0000000000001) {
printf(" %.10lf", balance);
break;
}
}
}
printf("\n");
}
return 0;
}
댓글