Bootstrap

PTA乙类1017 A除以B C++版 思路分析

A除以B

在做题过程中有对原始思路进行优化,并且结合git来保存每一次的修改,工程化的感觉很是舒服。

来讲讲这道题吧。

题目解读

A少于1000位,很长,int甚至long long int也装不下,所以就想到用string
那么就面临着几个问题:

  1. 长整数的除法怎么除
  2. string如何转换成int来与B做除法
  3. 输出另一个长整数该怎么搞
  4. 余数如何确定

 

思路

第一个问题:

每次取出一位来与B相除,如果该数小于B,那就要取两位来与B相除。于是一开始的代码就是判断是否小于B,否则就手动取两位来和B相除,然后手动把循环计数的变量加1。过于麻烦。所以在打代码的过程中,想到另一种解法。

每次只取一位与B相除,得到的余数乘10与下一位相加,参与下一次的运算。如此循环,便要考虑指令的顺序。所以要先对余数这个变量进行初始化,然后先然余数乘10与当前A的某一位相加,再进行除法与取余的操作。但是又会出现问题,第一位除出来得到的结果是0怎么办,后面的数全是0又怎么办。

所以,单独在循环外对A的

;