以下关于高精度运算的说法错误的是()
这题考高精度运算的基础概念,尤其乘法复杂度。拿到题先想:高精度加法是逐位进位 O(n),乘法是每位乘每位 O(n×m)。命题人爱把“只跟长数有关”这种直觉陷阱塞进选项 C,让你误以为乘法也像加法那样线性。避坑点:乘法必须两层循环,时间复杂度与两个数的位数乘积有关,不是取最大值。从历年数据看,高精度计算近五年考得越来越频(2023-2026 年共 8 题),尤其是 CSP 入门级和 GESP 五级七级反复出现,说明它属于基础必考。预测:未来仍会侧重辨析加法、乘法、除法的复杂度差异,或结合大数取模等简单应用,但不会出现 FFT 之类超纲内容。
学生最容易把高精度乘法误当成线性 O(n),因为加法确实是 O(max(n,m))。命题人故意在 C 选项说“只与较长者位数有关”,诱导你选错。其实乘法需要把每一位都乘一遍,复杂度是 O(n×m),两个数的位数都要算。另外,除法虽然也是逐位试商,但时间复杂度是 O((n-m)×m),也不是只跟长数有关。记住:加法减法看最大位数,乘法除法看位数乘积。
这道单选题考查的是高精度运算的基本概念,尤其是乘法的时间复杂度。命题人喜欢在基础概念里埋“直觉陷阱”,比如把加法那种“只跟长数有关”的线性复杂度,错误地套用到乘法上。
高精度计算是用数组或字符串模拟大整数运算,因为内置类型存不下。加法、减法确实只需要从低位到高位逐位处理,进位或借位,时间复杂度是 O(max(n,m))。
乘法就不一样了:竖式乘法里,被乘数的每一位都要和乘数的每一位相乘,然后错位相加。这意味着两层循环,总复杂度是 O(n×m)。除法同理,虽然是从高位开始逐位试商,但每一步都要处理余数,复杂度是 O((n-m)×m)。