zoukankan      html  css  js  c++  java
  • 墓地雕塑

    题目描述:

    在一个周长为10000的圆上等距分布着n个雕塑。现在又有m个新雕塑加入(位置可以随意放),希望所有n+m个雕塑在圆周上均匀分布。这就需要移动其中一些原有的雕塑。要求n个雕塑移动的总距离尽量小。

    输入格式:

    输入包含若干组数据。每组数据仅一行,包含两个整数n和m(2<=n<=1000, 1<=m<=1000),即原始的雕塑数量和新加的雕塑数量。输入结束标志为文件结束符(EOF)。

    输出格式:

    输入仅一行,为最小总距离,精确到0.0001。

    样例输入:

    2 1

    2 3

    3 1

    10 10

    1666.6667

    1000.0

    1666.6667

    0.0


    解决方法


    Code 

    #include<cstdio>
    #include<cmath>
    using namespace std;
    
    int main()
    {
    	int n,m;
    	while(scanf("%d%d",&n,&m)==2)
    	{
    		double ans=0;
    		for(int i=1;i<n;i++)
    		{
    			double pos=(double)i/n*(n+m);//坐标变换
    			ans+=fabs(pos-floor(pos+0.5))/(n+m);//返回原坐标 
    		}
    		printf("%.4lf
    ",ans*10000); 
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    第三次上机
    第5次作业
    第二次上机练习
    第三次作业
    第一次作业
    第一次作业
    第二次上机练习
    第二次作业
    第一次作业
    第四周作业
  • 原文地址:https://www.cnblogs.com/xlqtlhx/p/7793345.html
Copyright © 2011-2022 走看看