张三参加了不朽物理奥林匹克运动会。比赛的第0个问题如下。
有两个球分别重一公斤和二公斤。在这个问题中,它们可以被看作是粒子,因为它们足够小。在一开始(即t=0),两个球之间的距离为d km,并且两个球都不移动。
假设在这个系统中只有引力起作用(不考虑其他物体或其他力)。两个球从t=0开始移动。你的任务是当t=t0(s)时计算它们之间的距离。
帮张三解决问题!
以下信息可能有助于解决问题。
-万有引力公式:F=G⋅m1⋅m2/r2
-重力常数:G=6.67430×10−11m3/(kg⋅s2)
输入的第一行给出测试用例数T(1≤T≤100)。T测试用例如下。
对于每个测试用例,唯一的一行包含四个整数a,b,d,t0(1≤a,b,d,t0≤100),表示两个球的质量,它们之间的初始距离,以及球移动的时间。
保证两个球在(t0+1)秒内不会相撞。
对于每个测试用例,用实数x打印一条线,表示距离是x km。
你的答案的绝对或相对误差应不超过10-6。
刚看到题觉得物理题公式推一下就好了。最后推出一个一元三次方程,在我还在思考怎么解时,队友说过了。t0<=100,位移小,加速度变化忽略,当匀加速就行了。直接r=d-a1t0 ^ 2/2-a2t0 ^2/2.稍稍怀疑了下人生,阿巴阿巴。
代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=55;
const int
inf=0x3f3f3f3f;
const int
mod=1e9+7;
const double
G=6.6743;
inline int
rd(){
register int s=0,w=1;
register char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-') w=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
s=s*10+ch-'0';
ch=getchar();
}
return s*w;
}
int main() {
int t;t=rd();
while(t--)
{double a,b,d,t;a=rd(),b=rd(),d=rd(),t=rd();
double x=d*1000;
x=x*x;
double s=(G*0.5*t*t*(a+b)/x)/100000000000;//printf("%.20fn",s);
//d=d-s;
printf("%.20fn",d-s);
}
return 0;
}
本文发布于:2024-01-30 06:26:11,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170656717519871.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |