Ste*_*e K 6 javascript algorithm math
很难想出一个简洁的标题.我确信有什么条件可以实现我想要完成的任务,毫无疑问,我可以通过一种常见的算法来实现我的目标 - 我还不知道它们.
我需要将一个数字分成n个,每个都是50的倍数.这个数字本身是50的倍数.这是一个例子:将5,000除以3,最后得到三个数字,每个数字为50的倍数:
我也希望分配这些数字,以便它们来回翻转,这里有一个例子,有更多的数字来说明这一点:将5,000除以7,最后得到7个数字,每个数字为50的倍数:
请注意,在上面的示例中,我并不担心额外的50不在系列中心,也就是说我不需要这样的东西:
希望我已经清楚地问过这个问题,你明白我想要完成什么.
更新:这是我将要使用的功能.
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)
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.floor并Math.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)
| 归档时间: |
|
| 查看次数: |
9346 次 |
| 最近记录: |