【题意简述】:给出我们钉子个数与半径,让我们求出缠绕在钉子上的绳子有多长。
【分析】:从题目中我们能够看出,绳子长度的和等于每两个钉子的距离的和加上接触在钉子上的绳子的长度,不难发现这部分长度事实上就等于钉子的周长。
见代码:
#include<iostream> #include<cmath> using namespace std; #define Pi 3.1415//这个精度要尽量高! 也能够用4.0*atan(1.0) double s(double x1,double y1,double x2,double y2) { return sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)); } int main() { int N; double R; // 注意这里半径不要用int double x[110],y[110]; double ans = 0; cin>>N>>R; for(int i = 0;i<N;i++) { cin>>x[i]>>y[i]; } for(int i = 1;i<N;i++) { ans+=s(x[i-1],y[i-1],x[i],y[i]); } ans+=s(x[0],y[0],x[N-1],y[N-1]); ans+=2*Pi*R; printf("%.2lf ",ans); return 0; }