通过率 0% · 提交 0 · 通过 0
对一组浮点权重做 b 位对称量化,即把每个实数映射为 [-2^(b-1), 2^(b-1)-1] 范围内的整数。规则(必须严格按以下顺序和舍入方式实现): 1) 记 Q = 2^(b-1) - 1,M = max|x_i|。若 M = 0,输出三行:0.000000、n 个 0、0.000000。 2) 理论缩放系数(scale)s = M / Q;将 s 四舍五入(逢半远离零,即恰好为中点时向远离 0 的方向舍入)保留 6 位小数得到 s',后续一律使用 s'。 3) 量化 q_i = clip(round(x_i / s'), -2^(b-1), 2^(b-1)-1),其中 round 表示取整(逢半远离零),clip 表示范围截断(把越界值截断到边界)。 4) 反量化 d_i = q_i × s';误差 E = max|x_i - d_i|,四舍五入(逢半远离零)保留 6 位小数。 注意:本题所有『四舍五入』都指逢半远离零(0.5 → 1,-0.5 → -1),与部分语言默认的银行家舍入不同;由于 s' 已舍入到 6 位小数,最大元素量化后可能超过 Q,此时范围截断必须生效。
这类题属于算法机考高频题型中「模型量化 / 数值实现」方向的高频题型,通常考察对「模型量化 / 数值实现」的建模能力与边界条件处理。掌握本题的解题思路后,可举一反三应对同类真题方向,稳步提升机考通过率。
第一行两个整数 n b。第二行 n 个实数 x_i,最多 4 位小数。
第一行输出 s'(保留 6 位小数)。第二行输出 n 个量化整数,空格分隔。第三行输出最大绝对误差 E(保留 6 位小数)。
示例 1
输入示例
5 4 1.0000 -0.5000 0.2500 -1.0000 0.7500
输出示例
0.142857 7 -4 2 -7 5 0.071428
常规小数组
示例 2
输入示例
2 2 1.0000 0.5000
输出示例
1.000000 1 1 0.500000
0.5 边界,逢半远离零
时间限制 3000 ms · 内存限制 256 MB
本平台为独立第三方培训机构,与华为技术有限公司无任何关联;课程的服务内容与权益以购买协议为准,学习效果因个人情况而异。「华为 OD」「华为可信」等仅为对岗位与考试方向的客观描述,相关商标归各自权利人所有。
登录后可查看你在本题的历史提交,以及每次的各用例通过情况。