autoxbc
2019-01-14 01:55:11 +08:00
第一轮假设所有人是智障,那么会随机选,均值是 50,所以聪明人的第一个解是 33
然后大家都是聪明人,开始迭代
const people = 9999 ;// 总人数
const nums = Array(101).fill().map( (e,i) => i );// 备选数列
const rslt = [ 33 ]; // 迭代解数列
// 迭代次数选 10
Array(10).fill().forEach( () => {
const last = rslt[ rslt.length - 1 ];
const next = nums.reduce( (pre,cur) => {
const avrg = ( last*( people - 1 ) + cur ) / people ;
const calc = num => Math.abs( num - avrg*2/3 );
return calc(cur) < calc(pre) ? cur : pre ;
}, last );
rslt.push(next);
} );
console.log(rslt);
>>> [33, 22, 15, 10, 7, 5, 3, 2, 1, 1, 1]
1 是标准解
0 不可能,估计是没考虑选项必须是整数
13 什么的看不懂,你们说说看