Python “最短”挑戰(12.22)

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)
'''
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章