当前位置: 首页 > news >正文

超大数值减法

给定两个超大整数,求它们的差是多少?

 

#include <bits/stdc++.h>

using namespace std;

char a[11000], b[11000]; //被减数和减数

string sub(string sa, string sb) {

    if (sa == sb) return "0"; //特判:两数字相等

    bool neg = 0; //标记是否为负数

    if (sa.size() < sb.size() || sa.size() == sb.size() && sa < sb)

        swap(sa, sb), neg = 1; //让 a 大于 b

    int lena = sa.size(), lenb = sb.size();

    for (int i = 0; i < lena; i++)

        a[lena - 1 - i] = sa[i] - '0'; //把字符转换成数字然后翻转,使 a[0]是最低位

    for (int i = 0; i < lenb; i++)

        b[lenb - 1 - i] = sb[i] - '0';

    int lmax = lena;

    for (int i = 0; i < lmax; i++) {

        a[i] -= b[i];

        if (a[i] < 0) { //处理借位

            a[i] += 10;

            a[i + 1]--;

        }

    }

    while (!a[--lmax] && lmax > 0); //找到首位为 0 的位置,什么都不做

    lmax++;

    string ans;

    for (int i = lmax - 1; i >= 0; i--) //把数字转换成字符,然后翻转

        ans += a[i] + '0';

    if (neg) ans = "-" + ans; //检查是否为负数

    return ans;

}

int main() {
    string sa, sb;

scanf("%s%s",sa,sb);

printf("%s\n",sub(sa,sb));

return 0;


文章转载自:
http://calumniate.gbfuy28.cn
http://bewail.gbfuy28.cn
http://ablebodied.gbfuy28.cn
http://childermas.gbfuy28.cn
http://bajra.gbfuy28.cn
http://belecture.gbfuy28.cn
http://agamous.gbfuy28.cn
http://anastasia.gbfuy28.cn
http://chastening.gbfuy28.cn
http://brum.gbfuy28.cn
http://anaclastic.gbfuy28.cn
http://cancerian.gbfuy28.cn
http://asymptotic.gbfuy28.cn
http://bachelorette.gbfuy28.cn
http://capuche.gbfuy28.cn
http://accountantship.gbfuy28.cn
http://anisette.gbfuy28.cn
http://botheration.gbfuy28.cn
http://chlorocarbon.gbfuy28.cn
http://brownette.gbfuy28.cn
http://ballerine.gbfuy28.cn
http://bureaucratese.gbfuy28.cn
http://antecedence.gbfuy28.cn
http://autochrome.gbfuy28.cn
http://augur.gbfuy28.cn
http://arapaima.gbfuy28.cn
http://arpent.gbfuy28.cn
http://barogram.gbfuy28.cn
http://blissful.gbfuy28.cn
http://chlorophyllite.gbfuy28.cn
http://www.dtcms.com/a/212837.html

相关文章:

  • 解决论文中字体未嵌入的问题
  • STM32中的SPI通信协议
  • SprigBoot整合rocketmq-v5-client-spring-boot
  • CMake从入门到实战:现代C++项目构建指南
  • Android组件化框架设计与实践
  • Python60日基础学习打卡D35
  • NumPy数组切片
  • 基于AI自动生成测试用例
  • 「OC」源码学习——关联属性再探索
  • leetcode 131. Palindrome Partitioning
  • 【Qt】QCustomPlot相关
  • 2025一带一路暨金砖国家技能发展与技术创新大赛第三届企业信息系统安全赛项
  • 【面板数据】上市公司外资持股数据集(2005-2023年)
  • 防火墙高可用(HA)主备验证实验(eNSP)
  • TTL和死信交换机实现延迟队列
  • 4款顶级磁力下载工具,速度提升器,可以变下变播
  • 第三章 第二大脑的运作机理 整理笔记
  • 套索回归与岭回归通俗讲解
  • TCP建立连接为什么不是两次握手,而是三次,为什么不能在第二次握手时就建立连接?
  • uniapp-商城-68-shop(1-商品列表,获取数据,utils、tofixed 、parseInt的使用)
  • Python容器
  • 基于 LangChain + Chroma 实现文档向量化入库(含摘要处理 + RAG 查询):完整实战流程
  • Linux基本指令篇 —— cd指令
  • 【TypeScript】结构化类型系统与标明类型系统
  • [Protobuf] 快速上手:安全高效的序列化指南
  • Anaconda 常用命令汇总
  • RocketMQ核心特性与最佳实践
  • 用HTML5实现实时ASCII艺术摄像头
  • QT6安装与概念介绍
  • 汉诺塔超级计算机堆栈区与数据区的协同