zoukankan      html  css  js  c++  java
  • LA 3708

    题意:

          在一个周长为10000的圆上等距分布着n 个雕塑,现在又有m 个新雕塑加入(位置可以随意放置),

    希望所有(n+m)个雕塑在圆周上均匀分布,这就需要移动其中一些雕塑,要求n个雕塑移动的总距离尽量小。

    【输入格式】

          输入包含若干组数据。每组数据仅一行,包含两个整数n和m(2≤n≤1000,1≤m≤1000),即原始雕塑数量和新加雕塑数量。

    输入结束标志为文件结束符(EOF)

    【输出格式】

      输入仅一行,为最小距离,精确到小数后四位。

    【样例输入】

      2  1

      2  3

      3  1

      10  10

    【样例输出】

      1666.6667

      1000.0

      1666.6667

      0.0

    【代码】

    //2019.4.21 墓地雕塑
    #include <iostream>
    #include <iomanip>
    #include <cmath>
    using namespace std;
    
    int main()
    {
        int n, m;
        while (scanf_s("%d%d", &n, &m) == 2)
        {
            double ans = 0.0;
            for (int i = 1; i < n; i++)
            {
                double pos = (double)i / n*(n + m);//计算每个需要移动的雕塑的坐标
                ans += fabs(pos - floor(pos + 0.5)) / (n + m);//fabs浮点数取绝对值,floor向下取整,floor(x+0.5)类似round四舍五入
                //先计算出需要移动的雕塑坐标,计算移动最短距离,换算成(n+m)比例
            }
            cout <<fixed<<setprecision(4)<< ans * 10000;//格式化输出保留四位小数
        }
        return 0;
    }

     

  • 相关阅读:
    Burp Suite Professional单文件精简版该如何使用?
    快速掌握WinDBG
    Baymax大白补丁打油诗
    学员达标后完成的作业
    5星命名法:掌握这个软件全省
    挖掘IDA不可缺少的插件
    JEB安装和使用视频教程系列
    Ollydbg/x32dbg/x64dbg堆栈回溯要点总结
    Ollydbg狩猎从入门到精通
    Ollydbg/x32dbg爆破与逆向八法
  • 原文地址:https://www.cnblogs.com/cjwen/p/10744629.html
Copyright © 2011-2022 走看看