CF127A Wasted Time 题解

Content

平面上有 \(A_1(x_1,y_1),A_2(x_2,y_2),...,A_n(x_n,y_n)\) 共计 \(n\) 个点。你需要依次将 \(A_1\) 连接至 \(A_2\),\(A_2\) 连接至 \(A_3\),以此类推,直到将 \(A_{n-1}\) 连接至 \(A_n\) 为止。每次连接的长度即为连接的两个点之间的距离。你需要在 \(k\) 个相同的平面上完成这样的操作,已知你连接的速度为 \(50\) 个单位每秒,求完成所有的连接操作需要的时间。

数据范围:\(2\leqslant n\leqslant 100,1\leqslant k\leqslant 1000\)。

Solution

每次将线段的长度除以 \(50\) 累加进去,这样就不需要再在最后还要除以一个 \(50\)。最后记得答案再乘上 \(k\)。总之不是很难。

贴个两点之间的距离公式吧:\(dis(A,B)=\sqrt{(x_A-x_B)^2+(y_A-y_B)^2}\)

Code

#include <cstdio>
#include <cmath>
using namespace std;

int n;
double ans, x[107], y[107], k;

double dist(int i, int j) {
	return sqrt((x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j])) / 50.0;
}

int main() {
	scanf("%d%lf", &n, &k);
	for(int i = 1; i <= n; ++i)	scanf("%lf%lf", &x[i], &y[i]);
	for(int i = 1; i < n; ++i)	ans += dist(i, i % n + 1);
	printf("%.9lf", ans * k);
}
上一篇:CSS Color - HSL 函数


下一篇:非确定的自动机NFA确定化为DFA