仅供参考
2026-08-30 13:18:33
发布于:北京
5阅读
0回复
0点赞
include<bits/stdc++.h>
//# include<iostream>
//# include<cmath>
//# include<cstdio>
using namespace std;
//计算两点之间距离的函数 ;
//参数:两点坐标(x1,y1) 和(x2,y2);
//返回值:两点之间的欧几里得距离;
double f(double x1,double y1,double x2,double y2){
//sqrt()开平方,计算两点距离;
return sqrt(pow(x1-x2,2)+pow(y1-y2,2));
}
int main(){
int n; double r;//钉子数量(多边形顶点数) //钉子的半径
cin>>n>>r;//从标准输入读取n,r;
double first_x,first_y; //定义变量存储点的坐标
double prev_x,prev_y;//上一个点的坐标
double cur_x,cur_y;//当前点的坐标
cin>>first_x>>first_y;//读入第一个点 //读取第一个钉子的x,y坐标
prev_x=first_x;//将第一个点设置为上一个点
prev_y=first_y;//以便后续计算第一条边
double C=0.0;//多边形周长,初始化为 0
//循环读入第2到第n个点
for(int i=2;i<=n;i++){
//i从2开始是因为第一个点已读入
cin>>cur_x>>cur_y;
//读取当前点的x,y坐标
//计算当前点与上一个点的距离 ,累加到周长
C+=f(prev_x,prev_y,cur_x,cur_y);
prev_x=cur_x;
//更新“上一个点”为当前点,准备进行下一次循环
prev_y=cur_y;
}
//最后一条边:最后一个点回到第一个点(闭合多边形)
C+=f(prev_x,prev_y,first_x,first_y);
//计算绳子总长度=多边形周长+一个完整圆的周长(2πr)
double total = C+2*acos(-1.0)*r;
//输出结果,保留两位小数
printf("%.2f",total);
return 0 ;
}
这里空空如也







有帮助,赞一个