//极限分配法
function average(total,pageid)
{
if(pageid>total){
return false;
}
parr = new Array();
if(Math.floor(total/pageid) === total/pageid){ //整除
isfix = true;
psize = total/pageid;
}else{ //非整除
isfix = false;
psize = Math.ceil(total/pageid); //向上取整
}
if(isfix === true){
for(i=0;i<pageid;i++){
parr.push(psize);
}
}else{
y = 0;
for(i=0;i<pageid;i++){
psize = Math.floor(total/pageid);
y += psize;
parr.push(psize);
}
if(y<total){
last = total - y;
for(i=0;i<last;i++){
parr[i]++;
}
}
}
return parr;
}
//数组求和
function arradd(arr)
{
num = 0;
for(i=0;i<arr.length;i++){
num += arr[i];
}
return num;
}
arr = average(100,49);
allnum = arradd(arr);
console.log(arr);
console.log(allnum);
运行结果:
(49) [3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
有2个人分到了3个苹果,剩余的人分到了2个苹果,并且加起来等于100,符合要求
另外,把100个苹果分配给51个人时:
(51) [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1]
加起来也是等于100,符合要求