0
点赞
收藏
分享

微信扫一扫

(阶段四1.4)LA 3708 Graveyard(一个圆圈上有n个点,新加入m个点,求每个点的最小移动距离)


/*
 * LA_3708.cpp
 *
 *  Created on: 2013年11月17日
 *      Author: Administrator
 */

#include <iostream>
#include <cstdio>
#include <cmath>

using namespace std;

int main(){
	int n,m;
	while(scanf("%d%d",&n,&m)!=EOF){
		double ans = 0.0;
		int i;
		double pos;
		for(i = 1 ; i < n ; ++i){
			/**
			 * floor():向下取整
			 * floor(pos+0.5):四舍五入
			 * fabs():求绝对值
			 */
			pos = (double)i/n*(n+m);//求除了原点,每个点的初始坐标.*(n+m)是为了求每一个圆圈的初始为周长伟(n+m0的圆圈
			ans += fabs(pos - floor(pos+0.5))/(n+m);// /(n+m)是为了将圆圈的长度恢复为单位1
		}

		printf("%.4lf\n",ans*10000);
	}

	return 0;
}


举报

相关推荐

0 条评论