首页 > 编程语言 >高精度算法

高精度算法

时间:2023-10-14 15:12:37浏览次数:38  
标签:高精度 int -- 算法 cnt2 cnt1 加法

1.高精度加法

这个比较简单一些,主要是考虑满10进位的问题,直接写代码就可以。(若数字很大的话,不太好运算,所以将数字转化成字符串的形式输入)

#include <iostream>
using namespace std;

const int N = 100010;
int A[N], B[N], C[N];

int Add(int a[], int b[], int c[], int cnt) {

    int t = 0;//t表示进位

    for (int i=1; i<=cnt; i++) {
        t += a[i] + b[i];//进位加上a和b第i位上的数
        c[i] = t % 10;//c的值就是进位的个位数
        t /= 10;//把t的个位数去掉只剩下十位数,即只剩下这个位置的进位
    }
    if (t) c[++cnt] = 1;//如果t==1,表示还有一个进位,要补上

    return cnt;
}

int main() {

    string a, b;
    cin >> a >> b;  

    //A和B倒着放进int数组,因为有进位,倒着放容易处理
    int cnt1 = 0;
    for (int i=a.size()-1; i>=0; i--)
        A[++cnt1] = a[i] - '0';

    int cnt2 = 0;
    for (int i=b.size()-1; i>=0; i--)
        B[++cnt2] = b[i] - '0';

    int tot = Add(A, B, C, max(cnt1, cnt2));

    //因为A和B是倒着放的,所以C也要倒着输出
    for (int i=tot; i>=1; i--)
        cout << C[i];
}

2.高精度减法

 (时间复杂度为O(n)),

和高精度加法差不多,值得注意的是①减法的借位处理②相减为负数的处理③前导0的处理

 //高精度加法是一样的。

 

标签:高精度,int,--,算法,cnt2,cnt1,加法
From: https://www.cnblogs.com/zhaorubing/p/17763291.html

相关文章

  • KMP模式匹配算法
    例题展示例题解决......
  • 电机控制算法
    电机控制算法是用来控制电机运动的一种算法。下面介绍几种常见的电机控制算法:开环控制:这是最简单的电机控制算法,也称为无反馈控制。在开环控制中,输出信号直接作用于电机,但没有对电机的实际位置或速度进行反馈检测和校正。因此,开环控制容易受到负载变化、摩擦等因素的影响,控制精度较......
  • 10.14算法
    给你一个整数数组nums,设计算法来打乱一个没有重复元素的数组。打乱后,数组的所有排列应该是 等可能 的。实现Solutionclass:Solution(int[]nums)使用整数数组nums初始化对象int[]reset()重设数组到它的初始状态并返回int[]shuffle()返回数组随机打乱后的结果 示......
  • 网络规划设计师真题解析--PERT “计划评审技术”(三点估算法)
    某网络建设项目的安装阶段分为A、B、C、D四个活动任务,各任务顺次进行,无时间上重叠,各任务完成时间估计如下图所示,按照计划评审技术,安装阶段工期估算为(70)天。(2019年)(70)A.31   B.51    C.53    D.83答案:C解析:依据三点估算公示,活动历时均值=(最悲观时间+最可能时间*4+......
  • 算法题解——多数元素
    题目给定一个大小为n的数组nums,返回其中的多数元素。多数元素是指在数组中出现次数大于⌊n/2⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入:nums=[3,2,3]输出:3示例2:输入:nums=[2,2,1,1,1,2,2]输出:2提示:n==nums.length......
  • 智慧矿山&矿山安全生产:AI算法实现矿山井下堆料检测
    在矿山行业中,堆料是一个重要的环节。堆料过程中,常常出现堆料不均匀、溢堆、重叠等问题,影响了生产效率和质量。传统的堆料检测方法耗时且不准确,无法满足井下作业的需求,因此需要一种智能化的堆料检测解决方案,这就是AI算法实现井下堆料检测的应用场景。AI算法技术在矿山行业中的应用日......
  • 高精度减法
    一、算法描述要实现两个高精度数的减法,和高精度加法一样都是模拟竖式计算的过程,主要就是解决以下两个问题。谁大谁小?由于这两个数字都很大,但是不知道谁更大,所以要先判断哪个数更大,思路如下:判断这两个数谁的位数更大,位数更大的自然更大。如果位数不相同,从最高位开始往低位......
  • Exception in thread "main" java.security.InvalidKeyException: Wrong key size问题
    问题描述在Java里面使用DES加密算法,然后就爆出这个错误:问题解决换用了另外一种加密解密的函数:SecretKeySpec;即将原来的这种:换成了这种:我是觉得使用DES加密算法时,它一直显示key的字节长度不对,就想着换一种表述方式,又看到了别的友友的经验分享,就换成这样试了试(直接放进mai......
  • 深入理解MySQL中的Join算法
    本文已收录至GitHub,推荐阅读......
  • 逆波兰表达式与迷宫算法
    中项表达式是人类的算术思路,逆波兰表达式是机器结合栈结构完成算式解析的最佳结构。文章链接:https://zhuanlan.zhihu.com/p/357982040迷宫算法文章链接:https://blog.csdn.net/m0_53157173/article/details/114486303......