Description
有一組點均勻地分佈在在一個周長爲10000米的圓上。現在要再添加一些點進去,使得這些點仍均勻分佈。如果僅可以沿圓周移動某些點,請你求總移動距離的最小值。
Input
有多行輸入,每行兩個數字n,m(2<=n<=1000,1<=m<=1000),空格隔開,分別表示原先和要添加的點的數量,當輸入0 0
時,表示輸入結束,程序退出。
Output
總移動距離的最小值,保留4位小數。
其餘要求同首題。
Sample Input
2 1
2 3
0 0
Sample Output
1666.6667
1000.0000
Reference code
[n1,n2]=list(map(int,input().split(' ')))
while n1 and n2:
print('%.4f'%sum(abs(i*10000/n1-(i+int(i*n2/n1)+int(i*n2/n1-int(i*n2/n1)+0.5))*10000/(n1+n2)) for i in range(n1)))
[n1,n2]=list(map(int,input().split(' ')))
'''
while True:
[n1,n2]=list(map(int,input().split(' ')))
if n1==0 and n2==0:
break
ans=0
x=[i*10000/n1 for i in range(n1)]
y=[i*10000/(n1+n2) for i in range(n1+n2)]
for i in range(n1):
for j in range(n1+n2):
if y[j]<=x[i]<=y[j+1]:
ans+=min(x[i]-y[j],y[j+1]-x[i])
print('%.4f'%ans)
'''