- 主题:问个数学问题
a1,a2...an n个整数,和为S
要求给出
100*a1/S , 100*a2/S..... 100*an/S
最接近的整数数组
b1,b2,...bn
且b1+b2+..bn=100
实际上就是精度调整。
最好是给个函数f(x),而不是 bn=100-b1-b2...
--
修改:qlogic FROM 221.232.128.*
FROM 221.232.128.*
这本质上是一道算法题,可以编程求解。有n个元素,要么向上取整,要么向下取整。 这里给出n个元素均为非负的应用场景的算法,
第一步,计算这n个元素的小数部分的和,设为S, S为整数,如果S为0,直接结束。
第二步,将n个元素进行排序,排序规则是小数部分越大越排在前面
第三步,排序后的n个元素的前S个向上取整,其余的向下取整
第四步,根据排序前后的映射关系,输出最终的结果
结束
【 在 qlogic 的大作中提到: 】
: a1,a2...an n个整数,和为S
: 要求给出
: 100*a1/S , 100*a2/S..... 100*an/S
: ...................
--
FROM 111.201.150.*
“最接近”怎么衡量?方差最小?
还有 n 和 S 得有个范围吧,要不然,比如 n=2万,前1万个a等于1,后1万个等于2,
b 不管怎么取都很别扭。
【 在 qlogic 的大作中提到: 】
: a1,a2...an n个整数,和为S
: 要求给出
: 100*a1/S , 100*a2/S..... 100*an/S
: ...................
--
FROM 120.229.36.*