poj 2365

http://acm.pku.edu.cn/JudgeOnline/problem?id=2365

鄙视一下自己,净犯低级错误

#include<stdio.h>

#include<math.h>

#define PI 3.141592653589

double distance(double x1,double y1,double x2,double y2)

{

	return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));

}

int main()

{

	int nNail,i;

	double x[110],y[110],lineleng,radius;     //起先半径定义成了int,其实脑子里想着是double,不知怎么大脑短路了

	while(scanf("%d%lf",&nNail,&radius)!=EOF)  //输入写成了%d,再次短路

	{

		lineleng = 2 * PI * radius;     //期间怕精度不够,有换成acos(double(-1))的,没想到用C提交,CE了,C++就不CE了

		scanf("%lf%lf",&x[0],&y[0]);    //原先当nNail=1时,直接跳过输入,这也是一直WA的原因之一,看了好十几遍后才发现,其实在调试别人的程序时就觉得有点怪,他们没输出,我怎么有输出???

		for(i = 1; i < nNail; i++)

		{

			scanf("%lf%lf",&x[i],&y[i]);

			lineleng += distance(x[i-1],y[i-1],x[i],y[i]);	

		}

		lineleng += distance(x[0],y[0],x[nNail-1],y[nNail-1]);

		printf("%.2lf\n",lineleng);

	}

	return 0; 

}

你可能感兴趣的:(poj)