如何将数字分成整数,每个都是n的倍数?

Ste*_*e K 6 javascript algorithm math

很难想出一个简洁的标题.我确信有什么条件可以实现我想要完成的任务,毫无疑问,我可以通过一种常见的算法来实现我的目标 - 我还不知道它们.

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

  • 1650
  • 1700
  • 1650

我也希望分配这些数字,以便它们来回翻转,这里有一个例子,有更多的数字来说明这一点:将5,000除以7,最后得到7个数字,每个数字为50的倍数:

  • 700
  • 750
  • 700
  • 750
  • 700
  • 700
  • 700

请注意,在上面的示例中,我并不担心额外的50不在系列中心,也就是说我不需要这样的东西:

  • 700
  • 700
  • 750 <---注意'50'是居中的
  • 700
  • 750 <---注意'50'是居中的
  • 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;
}
Run Code Online (Sandbox Code Playgroud)

sch*_*sch 7

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
Run Code Online (Sandbox Code Playgroud)

编辑

您可以替代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
Run Code Online (Sandbox Code Playgroud)