URAL 1020 Rope

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;

}

你可能感兴趣的:(r)