题目大意:有一个圆,在这个圆上有n个分布均匀的石像,现在加入m个石像,希望所有的石像在圆上分布均匀,求移动原有石像的最小距离和
解题思路:一个石像的位置保持不变,第i个石像的位置再i/n处,加入m个石像后,这个石像就要移动到(m+n)*i/n/(n+m),则其移动的距离就是这两个的差
#include<cmath>
#include<cstdio>
int main() {
int n, m;
while(scanf("%d%d",&n, &m) == 2) {
double ans = 0.0;
for(int i = 0; i < n; i++) {
double t = double(m + n) * i / n;
ans += fabs(t - floor(t+0.5)) / (m + n);
}
printf("%.4lf\n",ans * 10000);
}
return 0;
}