题目地址:http://vjudge.net/problem/UVALive-3708
找规律,因为原来的一个雕塑可以看作不动的,所以放置后的雕塑的位置和之前的位置都知道了,所以只需要判断要移动的每个点移动的最短路径就好了
#include <bits/stdc++.h>
using namespace std;
#define abs(a) ((a)>0?(a):-(a))
int main(int argc, char const *argv[])
{
int n,m;
while(scanf("%d%d",&n,&m)==2)
{
double ans=0.0;
if(n==m){
printf("0.0\n");
continue;
}
for(int i=1;i<n;i++){
double pos=(double)i/n*(n+m);
ans+=abs(pos-(int)(pos+0.5))/(n+m);
} //四舍五入找最近的点
printf("%.4lf\n",ans*10000);
}
return 0;
}