输入的整数可能非常大,要爆long long,因此将输入的 n和m作为字符串处理。
使用字符串模拟大整数的除法
模拟长除法:
从 n 的高位开始,逐位取数字,组成一个当前被除数(初始余数为 0)。
每次将当前被除数乘以 10(即向左移位,相当于处理下一位)并加上新数字。
对当前被除数除以 m,得到商的当前位和新的余数。
重复此过程,直到处理完 n 的所有位。
代码实现
初始化余数 yushu = 0 和商字符串 shang = ""。
遍历 n 的每一位数字:
将当前余数乘以 10(模拟向左移位)并加上当前数字(digit - '0' 转换为整数)。
计算当前被除数除以 m 的商(yushu / m),追加到 shang。
更新余数为 yushu % m。
这样逐位模拟了长除法的过程。
注意要处理商的前导零
使用 find_first_not_of('0') 找到第一个非零字符的位置。
如果整个商是零(start == string::npos),输出 "0"。
否则,截取从第一个非零字符开始的子字符串作为商