posts - 0,comments - 0,trackbacks - 0
可以看出,结果由一个个线段与圆弧组成,线段的长度好算,本题的主要关键是圆弧的长度。
将直线去掉,把所有的圆弧沿着直线的轨迹平移,可以刚好拼成一个整圆(具体的证法大家去翻各大数学书吧。。我只能大概的明白)。那么最后的答案就是所有线段的长度加上一个圆的周长了。
#include<stdio.h>
#include
<math.h>
long n,i;
double r,sum,pi;
double v[102][3];
int main()
{
  scanf(
"%ld %lf",&n,&r);
  pi
=3.141592653;
  
for (i=1;i<=n;i++)
  {
    scanf(
"%lf %lf",&v[i][1],&v[i][2]);    
  }
  n
++;
  v[n][
1]=v[1][1];v[n][2]=v[1][2];
  sum
=2*pi*r;
  
for (i=2;i<=n;i++)
    sum
+=sqrt(pow(v[i][1]-v[i-1][1],2)+pow(v[i][2]-v[i-1][2],2));
  printf(
"%0.2lf",sum);  
}

posted on 2011-07-05 22:10 梦转千寻 阅读(40) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航:   博客园   博客园最新博文   博问   管理