【7. 高精度除法】

简介: 思路:> - 高精度整数除以低精度的整数,商为C,余数为r。> - 从高位依次除以低精度整数。商(C)存在数组中,`r * 10 + 后一位`,继续除以低精度整数。一直循环结束。> - 去掉前导0

高精度除法

思路:

  • 高精度整数除以低精度的整数,商为C,余数为r。
  • 从高位依次除以低精度整数。商(C)存在数组中,r * 10 + 后一位,继续除以低精度整数。一直循环结束。
  • 去掉前导0

步骤:

  1. 为了和之前的高精度加法、减法、乘法模板一致,这里也是采用倒序存储,唯一不同的点是,这里是从高位进行运算,而之前都是从低位进行运算
  2. 设置余数,初始值 为0,高精度整数从高位依次除以低精度整数,商(C)存在数组中,余数 r * 10 + 后一位,继续运算。
  3. 进行翻转(之前高精度整数 123 + 10,倒序存放在数组中,从低位运算 321 + 01。而乘法需要从高位运算,所以需要翻转一下 )
  4. 去掉前导 0

    1. 倒序打印

    举例1661149687439.png

代码

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

// A / b,商是C, 余数是r
vector<int> div(vector<int> &A, int b , int &r) //r 是引用
{
   vector<int> C;
   r = 0;         
   for (int i = A.size() - 1; i >= 0; i --)
   {
       r = r * 10 + A[i];
       C.push_back(r / b);
       r %= b;
   }
   
   reverse(C.begin(), C.end());                         //翻转数组元素
   while (C.size() > 1 && C.back() ==0) C.pop_back();   //去掉前导0
   return C;
}

int main()
{
   string a;
   int b;
   
   cin >> a >> b;
   
   vector<int> A;
   for (int i = a.size() - 1; i >= 0; i --) A.push_back(a[i] - '0');
   
   int r;       //余数
   auto C = div(A, b ,r);
   
   for (int i = C.size() - 1; i >= 0; i --) printf("%d",   C[i]);
   cout << endl << r <<endl;
}
目录
相关文章
|
2月前
|
JavaScript 前端开发
JS浮点数精度问题及高精度小数运算:BigNumber解决方案
JS浮点数精度问题及高精度小数运算:BigNumber解决方案
175 0
|
6月前
|
存储
高精度(小数——BigDecimal)
高精度(小数——BigDecimal)
|
7月前
补码浮点数运算(设数的阶码为3位,尾数为6位(均不包括符号位)按机械补码浮点运算规则完成下列[x+y]补运算。)
补码浮点数运算(设数的阶码为3位,尾数为6位(均不包括符号位)按机械补码浮点运算规则完成下列[x+y]补运算。)
368 0
加减运算电路的介绍
加减运算电路 引言: 加减运算电路是计算机中常见的一种电路,它能够对数字进行加法和减法运算。本文将介绍加减运算电路的原理、设计和应用。 一、加法运算电路 加法运算电路是实现数字加法的关键部分。它能够将两个二进制数相加,并输出它们的和。 1. 半加器 半加器是加法运算电路的基本单元。它能够对两个二进制位进行加法运算,并输出它们的和与进位。半加器的逻辑电路图如下: (图1:半加器逻辑电路图) 半加器的真值表如下: (表1:半加器真值表) 从真值表可以看出,半加器的和输出位等于两个输入位的异或运算结果,进位输出位等于两个输入位的与运算结果。 2. 全加器 全加器是由两个半加器组成的加
342 0
运用BigInteger进行整数之间的高精度的加减乘除运算
运用BigInteger进行整数之间的高精度的加减乘除运算
100 0
|
存储 算法 大数据
基础算法-高精度除法
高精度算法 为什么要使用高精度算法 C++ 每一个变量都有自己的类型,每个类型都有自己的存储长度范围。
|
存储 算法 大数据
基础算法-高精度减法
高精度算法 为什么要使用高精度算法 C++ 每一个变量都有自己的类型,每个类型都有自己的存储长度范围。
|
C语言
C语言实现高精度(大位数)乘法
C语言实现高精度(大位数)乘法
133 0
|
大数据 C语言
C语言实现高精度(大位数)减法
C语言实现高精度(大位数)减法
173 0
|
大数据 C语言
C语言实现高精度(大位数)加法
C语言实现高精度(大位数)加法
217 0