URAL_1020
实际上圆弧部分能够组成一个圆,而直线部分则分别等于各相邻两点间距离。
#include<stdio.h> #include<string.h> #include<math.h> #define MAXD 110 int N; double R; const double pi = acos(-1.0); struct Point { double x, y; }p[MAXD]; void init() { int i; for(i = 0; i < N; i ++) scanf("%lf%lf", &p[i].x, &p[i].y); p[i] = p[0]; } double sqr(double x) { return x * x; } void solve() { int i; double ans = 0; for(i = 0; i < N; i ++) ans += sqrt(sqr(p[i].x - p[i + 1].x) + sqr(p[i].y - p[i + 1].y)); ans += 2 * pi * R; printf("%.2f\n", ans); } int main() { while(scanf("%d%lf", &N, &R) == 2) { init(); solve(); } return 0; }