加速度订单:用整数表示半个单位¶
出题人解法:直接计算 \(d=|at^2|/2\) . Codex(GPT-6):使用等价的整数表示,补齐范围证明和输出边界;计算公式并未改变。
算法与正确性¶
令 \(z=|a|t^2\) . 先用 64 位整数算出 \(z\) ,输出整数商 \(z/2\) ,再根据奇偶性输出 .0 或 .5 .
因为 \(t^2\ge0\) ,有 \(|at^2|=|a|t^2=z\) . 偶数 \(z\) 除以二没有小数部分,奇数 \(z\) 除以二的小数部分恰为 \(0.5\) ,所以所输出的一位小数就是公式的精确结果。\(a=0\) 或 \(t=0\) 时输出 0.0 ,不会出现负零。
数值范围¶
由 \(|a|,|t|\le10^4\) ,得到 \(0\le z\le10^{12}\) ,最大答案为 \(5\cdot10^{11}\) . 32 位整数不足,乘法从一开始就须用 64 位类型。程序把输入也读入 long long ,避免先做 32 位乘法再赋给较大类型。
出题人的浮点实现也适用于本题:所需整数乘积不超过 \(10^{12}<2^{53}\) ,在通常的 IEEE 754 binary64 环境下可以精确表示;除以二仍然精确。整数版把同一公式的结果拆成整数部分与半单位。
复杂度与验证¶
每组 \(O(1)\) 时间、\(O(1)\) 额外空间;含读入的总时间为 \(O(T+1)\) . 空批次没有输出。
程序见 std.cpp。检查了直接浮点、先判断奇偶及整数缩放等表示方式;它们均为同一公式的常数时间计算,没有需要独立列出的更优算法。数据包含正负参数、零、奇数乘积、最大绝对值和空批次,见 plan.json。参考时限和实测见评测说明。