#include <cstdio>
#include <cmath>
using namespace std;
#define G 6.67408e-11
#define t 0.01
#define maxn 35
#define maxt 100
int n;
double T;
struct Star {
double m;
double x, y, z;
double vx, vy, vz;
double ax = 0.0, ay = 0.0, az = 0.0;
double Fx = 0.0, Fy = 0.0, Fz = 0.0;
void get() {
// 坐标
scanf("%lf %lf %lf", &x, &y, &z);
// 质量
scanf("%lf", &m);
// 初速度
scanf("%lf %lf %lf", &vx, &vy, &vz);
}
void put() {
printf("%.12lf %.12lf %.12lf\n", x, y, z);
}
} star[maxn];
void cal() {
for (int i = 0; i < n; i++) {
star[i].ax = star[i].ay = star[i].az = 0.0;
for (int j = 0; j < n; j++) {
if (i != j) {
double r2 = \
(star[i].x - star[j].x) * (star[i].x - star[j].x) + \
(star[i].y - star[j].y) * (star[i].y - star[j].y) + \
(star[i].z - star[j].z) * (star[i].z - star[j].z);
double a = -G * star[j].m / r2;
double r = sqrt(r2);
star[i].ax += a * (star[i].x - star[j].x) / r;
star[i].ay += a * (star[i].y - star[j].y) / r;
star[i].az += a * (star[i].z - star[j].z) / r;
}
}
star[i].x += star[i].vx * t;
star[i].y += star[i].vy * t;
star[i].z += star[i].vz * t;
/*
star[i].x += star[i].vx * t + 0.5 * star[i].ax * t * t;
star[i].y += star[i].vy * t + 0.5 * star[i].ay * t * t;
star[i].z += star[i].vz * t + 0.5 * star[i].az * t * t;
*/
star[i].vx += star[i].ax * t;
star[i].vy += star[i].ay * t;
star[i].vz += star[i].az * t;
}
}
int main() {
scanf("%d %lf", &n, &T);
for (int i = 0; i < n; i++) {
star[i].get();
}
for (; T > 0; T -= t) {
cal();
}
for (int i = 0; i < n; i++) {
star[i].put();
}
return 0;
}
一直卡在22, 24, 26分上