墓地雕塑

问题描述

在一个周长为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));
}
} }
05-06 08:44