大整数减法需模拟手算借位,用字符串存储并从低位到高位逐位计算,关键在正确处理借位和去除前导零;先对齐长度,再倒序相减,最后反转结果。

大整数减法的核心逻辑是模拟手算,不是直接用 long long
直接用内置整型做减法会溢出,哪怕 unsigned long long 也只支持到约 1.8×10¹⁹。真正的大整数(比如几百位)必须用字符串或数组存每一位数字,然后从低位到高位逐位借位相减。关键不是“怎么写循环”,而是“怎么处理借位”和“怎么去掉前导零”。
用 std::string 存储时,先对齐再倒序计算最稳妥
常见错误是正着遍历字符串,结果借位逻辑绕晕。正确做法是:
— 把两个字符串转成等长(短的前面补 '0')
— 然后从末尾开始逐位相减(即 i = len - 1 到 0)
— 每次记录当前位结果和借位标志(carry,初值为 0,遇到被减数小于减数+借位时设为 1)
— 结果存入新字符串,最后反转
'-'
C++免费学习笔记(深入):立即使用
在学习笔记中,你将探索 C++ 的入门与实战技巧!











