看完有个想法,没有验证,但感觉可行
1. a1, a2 ... an 这些数,对每个数都可以求出一个 pair
(f, N), f 是 100*a/S 的小数部分,N 是100*a/S 的整数部分
2. 将这些 N1, N2, ... Nn 加起来得到 SN, 则我们需要分配的
剩余数是 100 - SN
3. 将这些 pair 按从大到小排序(以 f 为优先),取前 100 - SN
个,对其中的每一个 pair 的整数部分都加1
4. 取出所有的 pair 中的整数,这似乎就是满足条件的最接近的
整数数组。
【 在 qlogic 的大作中提到: 】
: 【 以下文字转载自 PreUnivEdu 讨论区 】
: 发信人: qlogic (戒网了), 信区: PreUnivEdu
: 标 题: 问个数学问题
: 发信站: 水木社区 (Thu Sep 29 10:58:00 2022), 站内
: 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...
--
FROM 14.203.49.*