rt,P3945
#include<bits/stdc++.h>
#define G 6.67408e-11
#define mit 1e-2
using namespace std;
int n;
class poj
{
public:
int spe;
double m;
double x[3],v[3],a[3];
poj(){}
poj(double xt,double yt,double zt,double mt,double vxt,double vyt,double vzt,int st)
{
m=mt,x[0]=xt,x[1]=yt,x[2]=zt;spe=st;
v[0]=vxt,v[1]=vyt,v[2]=vzt;
a[0]=a[1]=a[2]=0;
}
void move()
{
for(int i=0;i<=2;i++)
{
v[i]+=a[i]*mit;
x[i]+=v[i]*mit;
}
}
};
poj a[40];
double js(poj a,poj b)
{
return sqrt((a.x[0]-b.x[0])*(a.x[0]-b.x[0])+(a.x[1]-b.x[1])*(a.x[1]-b.x[1])+(a.x[2]-b.x[2])*(a.x[2]-b.x[2]));
}
void gx(poj &x)
{
x.a[0]=x.a[1]=x.a[2]=0;
for(int i=1;i<=n;i++)
{
if(i!=x.spe)
{
double jl=js(x,a[i]);
for(int j=0;j<=2;j++)
x.a[j]+=G*a[i].m*(a[i].x[j]-x.x[j])/(jl*jl*jl);
}
}
}
void moveobj()
{
for(int j=1;j<=n;j++)
gx(a[j]);
for(int j=1;j<=n;j++)
a[j].move();
}
int main()
{
double t;
scanf("%d%lf",&n,&t);
for(int i=1;i<=n;i++)
{
double x,y,z,m,vx,vy,vz;
scanf("%lf%lf%lf%lf%lf%lf%lf",&x,&y,&z,&m,&vx,&vy,&vz);
a[i]=poj(x,y,z,m,vx,vy,vz,i);
}
while(t>0)
{
//for(int j=1;j<=n;j++)
// printf("%lf %lf %lf\n",a[j].x[0],a[j].x[1],a[j].x[2]);
//system("pause");
//system("cls");
moveobj();
t=t-mit;
}
for(int j=1;j<=n;j++)
printf("%lf %lf %lf\n",a[j].x[0],a[j].x[1],a[j].x[2]);
return 0;
}
放在题目版里真的没人