高精度整数(n进制,n<=10)加法

本文介绍了高精度整数加法的算法,特别是在2到10进制之间的数的加法。通过三个例题详细阐述了如何处理不同进制的加法问题,包括数据范围、输入输出分析以及具体实现。例题涵盖了从基本的10进制加法到更复杂的变进制加法和寻找回文数的步骤计算。
摘要由CSDN通过智能技术生成

一、概述

高精度整数的意思即是数据范围极大,已经无法用unsigned long long存储的数据的运算。很多OJ中都有相关练习题(如a+b升级版等),而对于故意给出极大数据的题目此算法为常用算法。
本章仅研究对于10进制以内(2进制~10进制)数的加法。本章将使用例题的讲解方法。

二、例题

例题1

已知两个10进制数a,b,求a+b的值。

数据范围

对于a,b,50%的数据不大于10100

输入输出

输入1

201647458466448 116476489143158

输出1

318123947609606

分析

对于这个数据范围,很明显要使用高精度运算方法。
高精度加法的流程如下。以本题示例为例。
(1)使用char[]存储两个大整数,并将其全部存入int[];
(2)用一个新的int[]存储做完加法的数,按位全部加起来;
(3)处理进位。
流程如下图所示。
示例

实现

#include <cstdio>
#include <cstring>

char a1[105], b1[105];
int a[105], b[105], c[105];

int main(void) {
    FILE *f = fopen("in.txt", "r");

    memset(a, 0, sizeof(a));
    memset(b, 0, sizeof(b));
    memset(c, 0, sizeof(c));
    fscanf(f, "%s%s", a1, b1);
    fclose(f);
    int alen = strlen(a1), blen = strlen(b1);
    int i;
    // 倒序放入数字 
    for(i = 0; i < alen; i++) a[alen - i] = a1[i] - '0'; 
    for(i = 0; i < blen; i++) b[blen - i] = b1[i] - 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值