• 洛谷 P4710 「物理」平抛运动


    洛谷 P4710 「物理」平抛运动

    洛谷传送门

    题目描述

    小 F 回到班上,面对自己 28 / 110 的物理,感觉非常凉凉。他准备从最基础的力学学起。

    如图,一个可以视为质点的小球在点 A(x_0, y_0)A(x0,y0) 沿 xx 轴负方向以某速度抛出,无视除重力外的所有阻力,最后恰好以速度 vv 砸到 B(0, 0)B(0,0) 点。

    A1

    给定 vv 的大小与方向,你的任务是求出 (x_0,y_0)(x0,y0)。

    给定的速度单位为 m cdot s ^ {-1}ms−1,重力加速度 g = 10 (m cdot s ^ {-2})g=10 (ms−2),请输出以 mm 为单位的答案。

    如果你没有学过相关内容也没有关系,你可以从样例和提示里理解该题所求内容。

    输入格式

    输入一行,为两个最多 66 位的小数 v, heta(1 leq v leq 100, 15 ^ circ leq heta leq 75 ^ circ )v,θ(1≤v≤100,15∘≤θ≤75∘),即速度与图中所标角在弧度制下的大小。

    输出格式

    输出一行,两个最多 1515 位的小数 x_0, y_0x0,y0,为你的答案。

    你的答案与参考答案的相对误差或者绝对误差小于 10 ^ {-3}10−3 即视为正确。

    输入输出样例

    输入 #1复制

    输出 #1复制

    说明/提示

    样例解释

    如图。

    A2

    14.142136 approx 10 sqrt 2, 0.785398 approx frac pi 4 = 45 ^ circ .14.142136≈102,0.785398≈4π=45∘.

    小球从 (10, 5)(10,5) 以速度 (-10, 0)(−10,0) 抛出,即可在 t = 1st=1s 时以 (-10, -10)(−10,−10) 砸在 (0, 0)(0,0)。

    提示

    如果你没有学习过相关内容,下面的内容可能有帮助:

    zcy 教你学物理

    首先,由于单位均为标准单位,所以所有结果均可以直接数字运算;视为质点意味着没有体积。

    我们可以将小球速度分解,如图:

    A3

    其中水平方向上的速度 v_xv**x 即为抛出速度,运动过程中一直为 v sin hetavsinθ

    垂直方向上的速度 v_yv**y 受重力加速,由 00 变化至 v cos hetavcosθ

    从抛出时开始计时,当时间为 tt 时,设此时水平、垂直方向上速度的大小分别为 v_{xt}, v_{yt}vxt,vyt,水平、垂直方向上位移的大小分别为 x_{xt}, x_{yt}xxt,xyt,有:

    v_{xt} = v sin hetavxt=vsinθ

    v_{yt} = gtvyt=g**t

    x_{xt} = v_{xt}txxt=vxt**t

    x_{yt} = frac 1 2 g t ^ 2 = frac 1 2{v_{yt}t}xyt=21g**t2=21vyt**t

    当 tt 恰好是落地时间时,x_{xt}, x_{yt}xxt,xyt 即为答案。


    关于弧度制:

    pi = 180 ^{circ}π=180∘

    也就是说:frac pi 2 = 90 ^{circ}, frac pi 3 = 60 ^{circ}, cdots2π=90∘,3π=60∘, ⋯


    关于三角函数:

    如果你是 C/C++ 选手,你可以使用 math.h / cmath 里的 sin() cos() 进行计算;

    如果你是 Pascal 选手,你可以使用 math 库(在 begin 前添加 uses math;)里的 sin() cos() 进行计算。

    如果你是 Python 选手,你可以使用 math 库里的 math.sin() math.cos() 进行计算。

    如果你是其他语言的选手,请参考相应文档。

    题解:

    这题真的是一道物理题...高一文化课蒟蒻表示不太会做...

    但这题其实准备知识都告诉你了:平抛运动可以分解成一个自由落体运动和匀速直线运动。矢量运算用平行四边形法则正交分解法。那么我们就得到:

    水平方向上的速度(v_x)为抛出的速度,运动过程中为(v imes sin(alpha))(原谅我不会打cita)。而垂直方向上的速度还要加一个加速度(g=10m/s^2).那么就是从(0 ightarrow v imes cos(alpha))。很容易得出,这个东西还跟时间有关系。

    从抛出的时候开始计时:当时间为(t)时,设此时的水平、竖直方向上的速度大小分别为:(v_x,v_y).

    那么有:

    [v_x=v imes sin(alpha) ]

    [v_y=v imes cos(alpha) ]

    [v_y=gt ]

    所以,可以通过上面的那些式子搞吧搞吧得到一个运动时间的式子:

    [t=frac{v_y}{g} ]

    因为在水平方向质点相当于做匀速直线运动,所以水平方向上的位移(x_0)可以被表示为:

    [x_0=v_x imes t ]

    根据三角形相似,对应边成比例,所以有:

    [(frac{x_0}{2}):y_0=v_x:v_y ]

    变形:

    [y_0=frac{x_0}{2} imes frac{v_y}{v_x} ]

    所有的式子都在上面了,通过已知量可以解出两个未知量:(x_0,y_0)

    代码如下:

    #include<cmath>
    #include<cstdio>
    double v,cita,vx,vy,t,x2;
    const double g=10.0;
    int main() 
    {
        scanf("%lf%lf",&v,&cita);
        vy=v*cos(cita);
        vx=v*sin(cita);
        t=vy/g;
        x2=v*sin(cita)*t;
        printf("%.3lf %.3lf
    ",x2,(x2/2)*vy/vx);
        return 0;
    }
    
  • 相关阅读:
    《x的奇幻之旅》:有趣的数学科普
    转贴健康资讯:毒蘑菇有多毒
    《用地图看懂世界经济》:形势不错,内容偏旧,更适合出彩色电子版。
    《新定位》:过时的经典
    《开膛史》:台湾心外科医生写的医学史散文集 五星推荐
    [Unit Testing] Set the timeout of a Test in Mocha
    [React Native] Reduce Long Import Statements in React Native with Absolute Imports
    [SCSS] Convert SCSS Variable Arguments to JavaScript
    [Angular] Upgrading to RxJS v6
    [Angular] Advanced DI
  • 原文地址:https://www.cnblogs.com/fusiwei/p/11734623.html
Copyright © 2020-2023  润新知