高精度

时间:2022-01-24
本文章向大家介绍高精度,主要包括高精度使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一般数字超过10^18就得要用高精度了,用数组存大数的每一位,然后模拟加减乘除运算的过程。不过要注意前导零

高精度加法:

模板题:Luogu A+B Problem(高精)

题目描述

高精度加法,相当于a+b problem,不用考虑负数.

输入格式

分两行输入。a,b <= 10^500

输出格式

输出只有一行,代表a+b的值

代码及注释:

#include <iostream>
#include <cstring>
using namespace std;
const int N = 510;
int a[N], b[N], c[N];
char A[N], B[N];

int main()
{
    scanf("%s%s", A, B);
    int len1 = strlen(A), len2 = strlen(B), len3 = max(len1, len2) + 1;  // len3 是结果的最大长度 因为可能两数相加不进位 所以以防万一 要+1 
    for(int i = 0; i < len1; i++) a[len1 - i] = A[i] - '0';  // 倒着存 
    for(int i = 0; i < len2; i++) b[len2 - i] = B[i] - '0';
    
    for(int i = 1; i <= len3; i++)
    {
        c[i] += a[i] + b[i];   
        c[i+1] = c[i] / 10;  // 进位到下一位 
        c[i] = c[i] % 10; 
    }
    if(c[len3] == 0 && len3 > 1) len3--;  // 消除前导0  加法的话 只可能出现一个前导0 因为如果不进位的话 就只有一个位置是空的 
    
    for(int i = len3; i > 0; i--) cout << c[i]; // 倒着输出 
    
    return 0;
}
不要羡慕别人喝的饮料有各种颜色,其实未必有你的白开水解渴,

原文地址:https://www.cnblogs.com/MoonSkyy/p/15840825.html