很难为此提供一个简洁的标题。我确定我要完成的工作都有术语,并且毫无疑问,有一种通用的算法可以完成我要完成的工作-我只是还不了解它们。

我需要将数字分解为n个,每个n为50的倍数。数字本身就是50的倍数。这里是一个示例:
将5,000除以3,最后得到三个数字,每个数字都是50的倍数:

  • 1,650
  • 1,700
  • 1,650

  • 我还希望分配数字,以便它们来回翻转,这是一个带有更多数字的示例,以说明这一点:
    将5,000除以7,最后得到7个数字,每个数字都是50的倍数:
  • 700
  • 750
  • 700
  • 750
  • 700
  • 700
  • 700

  • 请注意,在上面的示例中,我不担心多余的50个不位于系列的中心,也就是说,我不需要这样的内容:
  • 700
  • 700
  • 750
  • 700
  • 750
  • 700
  • 700

  • 希望我已经清楚地提出了这个问题,以使您了解我想要完成的工作。

    更新:这是我将要使用的功能。
    var number = 5000;
    var n = 7;
    var multiple = 50;
    
    var values = getIntDividedIntoMultiple(number, n, multiple)
    
    function getIntDividedIntoMultiple(dividend, divisor, multiple)
    {
        var values = [];
        while (dividend> 0 && divisor > 0)
        {
            var a = Math.round(dividend/ divisor / multiple) * multiple;
            dividend -= a;
            divisor--;
            values.push(a);
        }
    
        return values;
    }
    

    最佳答案

    var number = 5000;
    var n = 7;
    
    var values = [];
    while (number > 0 && n > 0) {
        var a = Math.floor(number / n / 50) * 50;
        number -= a;
        n--;
        values.push(a);
    }  // 700 700 700 700 700 750 750
    

    编辑

    您可以交替使用Math.floorMath.ceil以获得所需的结果:
    while (number > 0 && n > 0) {
        if (a%2 == 0)
            a = Math.floor(number / n / 50) * 50;
        else
            a = Math.ceil(number / n / 50) * 50;
        number -= a;
        n--;
        values.push(a);
    }  // 700 750 700 750 700 700 700
    

    关于javascript - 如何将数字分为整数,每个整数都是n的倍数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9776555/

    10-12 01:34