A除以B
在做题过程中有对原始思路进行优化,并且结合git来保存每一次的修改,工程化的感觉很是舒服。
来讲讲这道题吧。
题目解读
A少于1000位,很长,int
甚至long long int
也装不下,所以就想到用string
。
那么就面临着几个问题:
- 长整数的除法怎么除
- string如何转换成int来与B做除法
- 输出另一个长整数该怎么搞
- 余数如何确定
思路
第一个问题:
每次取出一位来与B相除,如果该数小于B,那就要取两位来与B相除。于是一开始的代码就是判断是否小于B,否则就手动取两位来和B相除,然后手动把循环计数的变量加1。过于麻烦。所以在打代码的过程中,想到另一种解法。
每次只取一位与B相除,得到的余数乘10与下一位相加,参与下一次的运算。如此循环,便要考虑指令的顺序。所以要先对余数这个变量进行初始化,然后先然余数乘10与当前A的某一位相加,再进行除法与取余的操作。但是又会出现问题,第一位除出来得到的结果是0怎么办,后面的数全是0又怎么办。
所以,单独在循环外对A的