1 条题解
-
0
题意分析
给定个点构成的凸多边形顶点坐标和钉子半径,计算缠绕所有钉子的绳子总长度(绳子紧贴多边形并包裹每个钉头)。
解题思路
- 计算凸多边形周长(相邻顶点欧氏距离之和)
- 加上钉头包裹长度()
- 输出总长度(保留位小数)
实现步骤
- 输入和,读取个顶点坐标
- 遍历顶点计算相邻点距离并累加
- 总长度周长和
- 输出结果(格式)
代码实现
#include <iostream> #include <iomanip> #include <vector> #include <cmath> using namespace std; struct Point { double x, y; }; // 自定义距离函数,计算两点之间的欧几里得距离 double euclideanDistance(const Point& a, const Point& b) { return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y)); } int main() { int n; double r; cin >> n >> r; vector<Point> points(n); for (int i = 0; i < n; ++i) { cin >> points[i].x >> points[i].y; } double sum = 0.0; for (int i = 0; i < n; ++i) { int j = (i + 1) % n; sum += euclideanDistance(points[i], points[j]); // 使用重命名后的函数 } // 加上圆的周长 sum += 2 * M_PI * r; // 输出结果,保留两位小数 cout << fixed << setprecision(2) << sum << endl; return 0; }
- 1
信息
- ID
- 1366
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 8
- 已通过
- 1
- 上传者