题解:UVA11715 Car
Lonely_Peak · · 题解
题目大意
已知汽车的初速度
题目讲解
这道题就是一道朴素的语法题,主要考点是高中物理的匀变速直线运动公式。我们首先要知道:
-
速度公式(已知初速度、加速度、时间,求末速度):
\large v=u+a\cdot t -
位移公式(已知初速度、加速度、时间,求位移):
\large s = u \cdot t + \frac{1}{2} a \cdot t^2 -
速度-位移关系式(不含时间):
\large v^2=u^2 + 2a \cdot s -
平均速度求位移:
\large s = (\frac{u+v}{2})\cdot t
那我们知道这些公式以后,就可以通过这些公式,计算出题目需要得出的变量。
题目中四种情况的解法
情况 1(给定 u, v, t ):
- 求
a :用速度公式a = \Large\frac{v - u}{t} 。 - 求
s :用平均速度公式s = \Large\frac{(u + v)}{2} \normalsize \cdot t 。
情况 2(给定 u, v, a ):
- 求
t :用速度公式t = \Large\frac{v - u}{a} 。 - 求
s :用速度-位移关系式s = \Large\frac{v^2 - u^2}{2a} 。
情况 3(给定 u, a, s ):
- 求
v :用速度-位移关系式v = \sqrt{u^2 + 2as} 。 - 求
t :用速度公式t = \Large\frac{v - u}{a} 。
情况 4(给定 v, a, s ):
- 求
u :用速度-位移关系式u = \sqrt{v^2 - 2as} 。 - 求
t :用速度公式t = \Large \frac{v - u}{a} 。
那么接下来就可以很简单地完成编码了。
参考代码
#include<bits/stdc++.h>
#define int long long
#define Rint register int
#define fast_running ios::sync_with_stdio(false),std::cin.tie(0),std::cout.tie(0)
using namespace std;
signed main() {
fast_running;
int op, cnt = 0;
double t1, t2, t3;
while (cin >> op && op != 0) {
++cnt;
cout << "Case " << cnt << ": ";
cin >> t1 >> t2 >> t3;
if (op == 1) {
double u = t1, v = t2, t = t3;
cout << fixed << setprecision(3) << 1.0 * (v + u) / 2 * t << ' ';
cout << fixed << setprecision(3) << 1.0 * (v - u) / t << '\n';
} else if (op == 2) {
double u = t1, v = t2, a = t3;
cout << fixed << setprecision(3) << 1.0 * (v * v - u * u) / (2 * a) << ' ';
cout << fixed << setprecision(3) << 1.0 * (v - u) / a << '\n';
} else if (op == 3) {
double u = t1, a = t2, s = t3;
double v=1.0 * sqrt((u * u) + (2 * a * s));
cout << fixed << setprecision(3) << v << ' ';
cout << fixed << setprecision(3) << 1.0 * (v - u) / a << '\n';
} else if (op == 4) {
double v = t1, a = t2, s = t3;
double u=1.0 * sqrt((v * v) - (2 * a * s));
cout << fixed << setprecision(3) << u << ' ';
cout << fixed << setprecision(3) << 1.0 * (v - u) / a << '\n';
}
}
return 0;
}