盒子
盒子
文章目录
  1. 题目
  2. 题意
  3. 思路
  4. 代码

HDU 5144 NPY and shot(物理题 OR 三分)

题目

源地址:http://acm.hdu.edu.cn/showproblem.php?pid=5144

题意

给定一个高度H, 从H处抛出一个初速度为v的小球,问小球最远能到哪里。

思路

可以直接推公式
vtcos(0) = s
vtsin(0) = 0.5gt^2 - h
把角度消去,得到一个关于t^2的二次方程,要是这个方程有解,判别式必须≥0。所以s = v sqrt(2.0 g h + v v) / g;

也可以直接三分s(比三分角度精确)

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<string>
#include<cstdio>
#include<vector>
#define pb push_back
#define INF 1 << 30
#define fi first
#define se second
#define debug puts("=====================");
using namespace std;
typedef long long ll;
double g = 9.8;
int main () {
int t;
cin>>t;
int h, v;
while(t--) {
scanf("%d%d", &h, &v);
double s = v * sqrt(2.0 * g * h + v * v) / g;
printf("%.2f\n", s);
}
return 0;
}