会员专享
请先
登录,登录后可使用今日免费解锁;
开通会员后可解锁完整内容。
解题思路
核心思路
先把每个激活值截到 [−C,C],记截断后的最大绝对值为 M。Q=2B−1−1。M=0 时答案全是 0。否则 ri=zi⋅Q/M 按实数除法计算,再按绝对值做远离零的舍入:小数部分小于 0.5 直接丢掉,大于等于 0.5 向绝对值更大的一侧进 1,最后夹回 [−Q,Q]。
实现方法
对每个 xi 得到 zi,同时求出 M。M=0 就输出 n 个 0。否则对 zi=0,令 num=∣zi∣⋅Q,商为 num/M。若 2(nummodM)≥M,说明小数部分大于等于 0.5,商加 1。再乘回符号,并夹到 [−Q,Q]。用整数余数判断,避免浮点把恰好 0.5 判偏。乘积不超过 106×127,放进 64 位整数即可。