【发布时间】:2012-03-19 19:26:46
【问题描述】:
很难为此想出一个简洁的标题。我确信我想要完成的任务有一些术语,毫无疑问,一个通用的算法可以完成我所追求的 - 我只是还不知道它们。
我需要将一个数字分成 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;
}
【问题讨论】:
-
从您的示例中,您似乎希望每个较小的数字尽可能相等。那是对的吗?例如,一个简单的解决方案是对前 n-1 个数字中的每个数字取 50,其余的取其余数字,但我认为这不是您要寻找的...
标签: javascript algorithm math