CCCC天梯赛2017大区赛的L3-1。当时太蠢了,现在慢慢理清楚了。
当时我xjb乱搞骗了21分,现在想起来也是不堪回首。
首先,我们就直接说好出射角45°就是路程最大的这个结论,围绕这个结论,我们有
1,把速度分解为Vx和Vy,Vx和Vy都是V的 sqrt(2)/2,而E = m * V² / 2,所以Vx和Vy已知。
2,由速度公式,Vt = V0 + a t可得,t = V0 / g。那么上升期间的时间已知,乘以Vx就可得到S1,那么下降期间时间相同,所以S = 2 * S1.
容易错误的地方为:我竟然把能量给分解成水平和竖直方向的了,这样是绝对不可以的,因为,能量是标量,速度是矢量才可以分解。
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
double E = 1000, w, p, s = 0;
cin >> w >> p;
p = (100.0 - p) / 100.0;
w /= 100.0;
for(int i = 0; i < 10000; i++)
{
s += 2 * E / (w * 9.8);
E *= p;
}
printf("%.3lf\n", s);
return 0;
}