【Vijos P1007】绕钉子的长绳子 c++题解
来源:互联网 发布:智能医学软件 编辑:程序博客网 时间:2024/05/01 04:27
</pre><h1><strong>背景</strong></h1>平面上有N个圆柱形的大钉子,半径都为R,所有钉子组成一个凸多边形。<p>现在你要用一条绳子把这些钉子围起来,绳子直径忽略不计。</p><p></p><h1>描述</h1><p>求出绳子的长度</p><p></p><h1>格式</h1><p></p><p>输入格式</p><p></p>第1行两个数:整数N(1<=N<=100)和实数R。接下来N行按逆时针顺序给出N个钉子中心的坐标<p>坐标的绝对值不超过100。</p><p></p>输出格式<p>一个数,绳子的长度,精确到小数点后2位。</p><p></p><p></p><p>以逆时针顺序将N个钉子编号为1~N</p><p>dist(i,j)=i号钉子和j号钉子的直线距离</p><p>则Ans=dist(1,2)+dist(2,3)+........+dist(n,1)+2*π*R</p><p></p><p><pre name="code" class="cpp">#include <math.h>#include <iostream>#include <iomanip>#define MaxN 101#define Pi 3.1415using namespace std;class nail{public:double x,y;};int N;double R,Ans=0.000000;nail P[MaxN];void init(){cin>>N>>R;for (int i=0;i<N;i++) cin>>P[i].x>>P[i].y;}void work(){int next;double a,b;Ans+=2.000*Pi*R;if (N==1) {cout<<fixed<<setprecision(2)<<Ans<<endl;return ;}for (int i=0;i<N;i++){next=(i+1)%N;a=P[i].x-P[next].x;b=P[i].y-P[next].y;Ans+=sqrt(a*a+b*b);}cout<<fixed<<setprecision(2)<<Ans<<endl;}int main(){init();work();return 0;}
0 0
- 【Vijos P1007】绕钉子的长绳子 c++题解
- vijos P1007 绕钉子的长绳子
- Vijos P1007 绕钉子的长绳子
- vijos P1007绕钉子的长绳子
- Vijos P1007 绕钉子的长绳子
- P1007绕钉子的长绳子
- vijos-绕钉子的长绳子
- Vijos 1007题:绕钉子的长绳子
- Vijos 1007 饶钉子的长绳子
- 绕钉子的长绳子
- Vijos P1007绕钉子的绳子
- [vijos1007] 绕钉子的长绳子
- vijos1007 绕钉子的长绳子
- 洛谷 P1513 绕钉子的长绳子
- 1007.饶钉子的长绳子
- 绕钉子的绳子
- vijos题解--我是打饭的
- vijos P1197 费解的开关 题解
- Android Xfermode 实战 实现圆形、圆角图片
- shiro权限验证标签
- windows权限问题
- android手机屏幕横竖屏切换禁止调用生命周期函数方法
- 三元表达式之理解/jquery源码分析之$.inArray实现
- 【Vijos P1007】绕钉子的长绳子 c++题解
- js中的闭包之我理解
- Android BitmapShader 实战 实现圆形、圆角图片
- datatable
- [leetcode]Validate Binary Search Tree
- 网站运维如何监控云主机服务
- CYGWIN中一些问题
- Android Drawable 那些不为人知的高效用法
- Oracle数据库的基本操作及使用