专栏文章

题解:UVA11715 Car

UVA11715题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mipek8r5
此快照首次捕获于
2025/12/03 10:43
3 个月前
此快照最后确认于
2025/12/03 10:43
3 个月前
查看原文

题目大意

已知汽车的初速度 uu、加速度 aa、时间 tt、末速度 vv、位移 ss 中的部分值,要求根据输入组合计算出缺失的变量。

题目讲解

这道题就是一道朴素的语法题,主要考点是高中物理的匀变速直线运动公式。我们首先要知道:
  • 速度公式(已知初速度、加速度、时间,求末速度): v=u+at\large v=u+a\cdot t
  • 位移公式(已知初速度、加速度、时间,求位移): s=ut+12at2\large s = u \cdot t + \frac{1}{2} a \cdot t^2
  • 速度-位移关系式(不含时间): v2=u2+2as\large v^2=u^2 + 2a \cdot s
  • 平均速度求位移: s=(u+v2)t\large s = (\frac{u+v}{2})\cdot t
那我们知道这些公式以后,就可以通过这些公式,计算出题目需要得出的变量。

题目中四种情况的解法

情况 1(给定 u,v,tu, v, t):

  • aa:用速度公式 a=vuta = \Large\frac{v - u}{t}
  • ss:用平均速度公式 s=(u+v)2ts = \Large\frac{(u + v)}{2} \normalsize \cdot t

情况 2(给定 u,v,au, v, a):

  • tt:用速度公式 t=vuat = \Large\frac{v - u}{a}
  • ss:用速度-位移关系式 s=v2u22as = \Large\frac{v^2 - u^2}{2a}

情况 3(给定 u,a,su, a, s):

  • vv:用速度-位移关系式 v=u2+2asv = \sqrt{u^2 + 2as}
  • tt:用速度公式 t=vuat = \Large\frac{v - u}{a}

情况 4(给定 v,a,sv, a, s):

  • uu:用速度-位移关系式 u=v22asu = \sqrt{v^2 - 2as}
  • tt:用速度公式 t=vuat = \Large \frac{v - u}{a}
那么接下来就可以很简单地完成编码了。

参考代码

CPP
#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;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...