题目传送门(内部题144)


输入格式

  从$physics.in$读入数据。
  第一行一个数$T$,代表有$T$组数据。接下来$T$行每行$4$个浮点数,分别为$\theta,v,d,g$,保留到小数点后两位。


输出格式

  输出答案到$physics.out$。
  共$T$行,每行一个浮点数表示猫离起点的距离,四舍五入到$5$位小数。


样例

样例输入:

3
45 10 0.5 10
3.44 2.35 0.77 1.76
2.33 2.33 0.78 9.8

样例输出:

13.33333
0.92330
0.11493


数据范围与提示

样例解释:

对于第一个样例,如图所示,最终猫会停留在$(\frac{40}{3},0)$,距离原点距离约为$13.33333$。
物理大佬请无视下面这句话......
提示:对于垂直速度为$v$的物体将在飞行$\frac{v}{g}$的时间后到达最高点,速度分解使用平行四边形定则。

数据范围:

$subtask1:50pts,d=0$。
$subtask2:50pts,0\leqslant v\leqslant 1,000,0<g\leqslant 1,000,0\leqslant d<1,0<\theta<90,T\leqslant 50,000$。
(良心出题人没有构造坑人数据,不会卡精度的,只要你相信我)
$P.S.$这道题可能违背一些物理常识,但是有($chu$)一($ti$)些($ren$)原($tai$)因($cai$),就凑合着当水题做吧。


题解

刚看到这道题的时候已经停课集训$60$多天的我还真的认真回忆了一下公式……

还好想起来了……

首先,要把速度分解,这个不难,水平方向上就是$\cos\theta v$,竖直方向上就是$\sin\theta v$。

但是发现输入中给的角度是角度制,如果直接调用库里的函数需要先将其转化为弧度制。

其实$360^{\circ}=2\pi$,所以$\frac{\theta\pi}{180}$就变成了弧度制。

可能有同学说忘了$\pi$(您别说还真有)。

库里还有一个叫做$M\text{_}PI$的东西(具体操作看下面代码)。

知道了竖直方向上的速度,又知道重力加速度,就能根据公式$t=\frac{v_y}{g}$求出$t$了。

接着根据$s=v_xt$就能求出水平移动的距离了。

对于反弹,因为是等比数列,所以用等比数列求和公式即可做到$\Theta(1)$;也可以$while(1)$迭代至稳定,我就是这么做的(懒),精度设置成$1e-6$即可,$0.99^{1000}=0.000043171$,所以时间上也是没问题的。

时间复杂度:$\Theta(T\times 1000)$。

期望得分:$100$分。

实际得分:$100$分。


代码时刻

#include<bits/stdc++.h>
using namespace std;
const double eps=1e-6;
double theta,v,d,g;
int main()
{
int T;scanf("%d",&T);
while(T--)
{
scanf("%lf%lf%lf%lf",&theta,&v,&d,&g);
theta=theta*M_PI/180;
double SIN=sin(theta);
double COS=cos(theta);
double res=v;
double ans=0.0;
while(res>eps)
{
double t=2*SIN*res/g;
ans+=COS*res*t;
res*=d;
}
printf("%.5lf\n",ans);
}
return 0;
}

rp++

[CSP-S模拟测试]:物理课(数学)的更多相关文章

  1. [CSP-S模拟测试]:不等式(数学)

    题目描述 小$z$热衷于数学.今天数学课的内容是解不等式:$L\leqslant S\times x\leqslant R$.小$z$心想这也太简单了,不禁陷入了深深的思考:假如已知$L,R,S,M$ ...

  2. [CSP-S模拟测试]:A(数学)

    题目传送门(内部题44) 输入格式 一行四个整数,分别表示$S,T,a,b$. 输出格式 输出最小步数,数据保证有解. 样例 样例输入: 10 28 4 2 样例输出: 数据范围与提示 样例解释: 先 ...

  3. [CSP-S模拟测试]:装饰(数学)

    题目传送门(内部题147) 输入格式 每个测试点第一行一个正整数$T$,表示该测试点内的数据组数. 接下来$T$行,每行三个非负整数$a,b,c$,含义如题目中所示. 输出格式 对每组数据输出一行一个 ...

  4. [CSP-S模拟测试]:地理课(并查集+线段树分治)

    题目传送门(内部题146) 输入格式 从$geography.in$读入数据. 第一行两个数$n,m$,表示有$n$个点,$m$个时刻.接下来$m$行每行三个数,要么是$1\ u\ v$,要么是$2\ ...

  5. [CSP-S模拟测试]:最大值(数学+线段树)

    题目背景 $Maxtir$最喜欢最大值. 题目传送门(内部题128) 输入格式 第$1$行输入四个正整数$n,m,q$. 第$2$至$n+1$行中,第$i+1$行输入魔法晶石$i$的三种属性$(x_i ...

  6. [CSP-S模拟测试]:求和(数学)

    题目传送门(内部题107) 输入格式 一行五个正整数$x_1,y_1,x_2,y_2,m$ 输出格式 输出一个整数,为所求的答案对$m$取模后的结果. 样例 样例输入: 2 1 5 3 10007 样 ...

  7. [CSP-S模拟测试]:数列(数学)

    题目传送门(内部题95) 输入格式 第一行三个整数$n,a,b$,第二行$n$个整数$x_1\sim x_n$表示数列. 输出格式 一行一个整数表示答案.无解输出$-1$. 样例 样例输入:2 2 3 ...

  8. [CSP-S模拟测试]:Walker(数学)

    题目传送门(内部题86) 输入格式 第一行$n$接下来$n$行,每行四个浮点数,分别表示变换前的坐标和变换后的坐标 输出格式 第一行浮点数$\theta$以弧度制表示第二行浮点数$scale$第三行两 ...

  9. [CSP-S模拟测试]:Six(数学)

    题目传送门(内部题85) 输入格式 一个正整数$N$. 输出格式 一个数表示答案对$1000000007$取模后的结果 样例 样例输入1: 样例输出1: 样例输入2: 样例输出2: 样例输入3: 样例 ...

随机推荐

  1. dev chart使用

    public class LineChartHelp { #region 折线图 /// <summary> /// 创建折线图 /// </summary> public v ...

  2. wpf menuitem 简约显示的 template样式

    <ControlTemplate x:Key="MenuItemControlTemplate1" TargetType="{x:Type MenuItem}&qu ...

  3. JavaScript笔记(1)

    1.JavaScript的基本概念 JavaScript是一个解释型的脚本语言 JavaScript可以写在HTML文档内部的任何地方 行内式 内嵌式 链入式:<script src=" ...

  4. TVM设备添加以及代码生成

    因为要添加的设备是一种类似于GPU的加速卡,TVM中提供了对GPU编译器的各种支持,有openCl,OpenGL和CUDA等,这里我们选取比较熟悉的CUDA进行模仿生成.从总体上来看,TVM是一个多层 ...

  5. vue2.0+按需引入element-ui报错

    项目使用vue脚手架自动生成的,vue版本为^2.5.16.项目中需要按需使用element-ui,根据element-ui的官方文档,一开始在babel.config.js文件中修改配置 modul ...

  6. 5.Struts2-Struts标签

    通用标签 1.property(取值) property:<s:property value="username"/> property 取值为字符串:<s:pr ...

  7. web项目部署在centos 7验证码显示不出来解决方案

    今天把项目部署在centos7上,发现验证码显示不出来,看了一下tomcat日志 Exception in thread "http-nio-8080-exec-3" java.l ...

  8. Delphi RS-232C标准

  9. Python中文转为拼音

    # -*- coding: utf-8 -*-import sys def openTable(): f = open('gb-pinyin.table', 'r') table = f.read() ...

  10. 执行sudo pip3 ...报错 Traceback (most recent call last): File "/usr/bin/pip3", line 9, in <module> from pip import main ImportError: cannot import name 'main'

    对于普通pip,把pip3改成pip即可,其他的修改一样 1.执行命令 sudo gedit /usr/bin/pip3 2.改成下面的形式 from pip import __main__ # 需要 ...