Java实现蓝桥杯墓地雕塑

墓地雕塑

问题描述
在一个周长为10000的圆上等距分布着n个雕塑。现在又有m个新雕塑加入(位置可以随意放),
希望所有n+m个雕塑在圆周上均匀分布。这就需要移动其中一些原有的雕塑。要求n个雕塑移动的总距离尽量小。

输入格式
输入包含若干组数据。每组数据仅一行,包含两个整数n和m(2≤n≤1 000,1≤m ≤1 000),
即原始的雕塑数量和新加的雕塑数量。输入结束标志为文件结束符(EOF)。

输出格式
输出一个正整数,表示每袋核桃的数量。

样例输入1
2 1
2 3
3 1
10 10

样例输出1
1666.6667
1000.0
1666.6667
0.0

PS:首先,这个题很恶心人,
我们假设这个圆环得长度为n+m
我第i个雕塑 为(n+m)/ni;
我移动得最小距离就是找到最近得那个新节点,就是最近得整数(我一共有n+m个长度,我新点就是每一个整数点)
求差就可以了
最后求和,然后
10000在除m+n

package 第七次模拟;

import java.util.Scanner;

public class Demo1雕塑 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while(sc.hasNext()){
			
		
		int n = sc.nextInt();
		int m = sc.nextInt();
		double ans = 0;
		for(int i=0;i<n;i++)
		{
			double pos=(double)(n+m)/n*i;
			ans=ans+Math.abs(Math.floor(pos+0.5)-pos);
		}
		System.out.printf("%.4f\n",ans*10000/(double)(n+m));
		}
	}

}

posted @ 2020-03-02 10:29  南墙1  阅读(97)  评论(0编辑  收藏  举报