【算法设计与分析】墓地雕塑
算法2016-06-30
【题目】
【输入输出】
【样例】
【源代码】
<span style="font-family:Microsoft YaHei;font-size:24px;">#include<stdio.h>
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int n,m;//n个雕塑,现在加入m个雕塑
double k,a=0,b;
while(scanf("%d%d",&n,&m) == 2)
{
double ans=0;
for(int i=1;i<n;i++)
{
double pos=(double)i*(n+m)/n;//计算每个需要移动的雕塑的坐标,设环的大小为n+m
ans+=fabs(pos-floor(pos+0.5))/(n+m); //找出与之最近的那个点,并且将其归到1,求累积移动距离
}
k=ans*10000;//放大10000倍
b=modf(k,&a);//判断输出的数是否有小数
if(b==0)
printf("%.1f\n",k);//有小数输出4为小数,否则输出一位
else
printf("%.4lf\n",k);
}
return 0;
}
</span>