题目传送门(内部题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. MVC4学习要点记三

    一.数据迁移用来解决code first情况下当增加.删除.改变实体类,或改变DbContext类后,相应地更新数据库结构而不会对现有数据产生影响. 1.启用迁移指令:enable-migration ...

  2. Guava动态调用方法

    前言 大家在Coding的时候,经常会遇到这样一个情况,根据不同的条件去执行对应的代码.我们通常的处理方式是利用if-else判断,或者直接switch-case,特别是jdk1.6之后,swith开 ...

  3. 林大妈的CSS知识清单(二)可见格式化模型(内含margin塌陷与浮动闭合的解决方案)

    盒模型.浮动和定位是CSS中最重要的三个概念.它们共同决定了一个元素在页面中以怎样的形式进行排布与显示. 一.盒模型 1. 定义 盒模型是CSS的核心概念.一个页面中,所有的元素(不管他最终显示是圆形 ...

  4. 《Redis高阶应用》讲座总结

    数据结构延展 常用数据结构:String,Hash,List,Set,Sorted Set(不聊这些) 高级数据结构:Bitmaps,hyperloglog,GEO 单机拓展到分布式 为什么要分区:性 ...

  5. 红队基础设施建设:隐藏你的C2

    0x01 前言 待定

  6. mac 下的操作

    nodejs在Mac下的卸载 在 node 官网上下载的安装包,用安装包安装的node.应该可以用一下命令行卸载: 在终端输入以下命令: sudo rm -rf /usr/local/{bin/{no ...

  7. Odoo的 base 模型

    Odoo 内核中有一个base插件模块.它提供了 Odoo 应用所需的基本功能.然后有一组内置插件模块来提供标准产品中的官方应用和功能.base模块中包含两类模型: 信息仓库(Information ...

  8. [ZOJ 4025] King of Karaoke

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5766 求两个序列的相对元素的差出现次数最多的,最低出现一次. AC代 ...

  9. C#DataTable导出Excel,并实现合并单元格

    asp.net webwofrm后台代码----------建议Framework4.0及以上,3.5试过出现好多莫名错误... 首先导入两个程序集.我的是 office2003,引用的COM里面的  ...

  10. 需要以管理员的身份运行程序(winform)

    1.添加应用程序清单文件(app.manifest) 2.打开app.manifest,将<requestedExecutionLevel level="asInvoker" ...