算法之【仿竖式算法】

简介: 另类四则运算之大整数加减法:十进制的数值运算在计算机里都将转换成二进制的数值运算,而二进制的运算就是cpu中最根本的逻辑运算,最后再转化成十进制输出。这次介绍的方法是保留十进制的运算方式(小学生的列竖式计算),仅仅将每位数字转换成二进制。

另类四则运算之大整数加减法:

十进制的数值运算在计算机里都将转换成二进制的数值运算,而二进制的运算就是cpu中最根本的逻辑运算,最后再转化成十进制输出。这次介绍的方法是保留十进制的运算方式(小学生的列竖式计算),仅仅将每位数字转换成二进制。这种算法既在速度上有所提升,又能克服单个数据存储大小的限制。因此可以用来进行大整数的加减法(大整数通常指16位或32位以上整型数)。至于竖式计算的原理就不说了哦,不然有损大家的智商!

 

核心:模拟竖式计算,将大整数的每一位分开来存储与计算。

 

C语言完整程序:

//大整数加法:

#include

#include

char a[100],b[100];

int c[100],d[100];

int main()

{

         int m,n,i,j;

         scanf("%s %s",a,b);

         m=strlen(a);

         n=strlen(b);

         for(i=0;i<=m-1;i++)

         c[i]=a[m-1-i]-'0';

         for(i=0;i<=n-1;i++)

         d[i]=b[n-1-i]-'0';

         for(i=0;i<=99;i++)

         {

                   c[i]+=d[i];

                   if(c[i]>=10)

                   {

                            c[i]-=10;

                            c[i+1]+=1;

                   }

         }

         for(i=99;i>=0;i--)

         {

                   if(c[i]!=0)

                   {j=i;break;}

    }

    for(i=j;i>=0;i--)

    printf("%d",c[i]);

}


//大整数减法:

#include

#include

char a[100],b[100];

int c[100],d[100];

int main()

{

         int m,n,i,j;

         scanf("%s %s",a,b);

         m=strlen(a);

         n=strlen(b);

         for(i=0;i<=m-1;i++)

         c[i]=a[m-1-i]-'0';

         for(i=0;i<=n-1;i++)

         d[i]=b[n-1-i]-'0';

         for(i=0;i<=99;i++)

         {

                   c[i]-=d[i];

                   if(c[i]<0)

                   {

                            c[i]+=10;

                            c[i+1]-=1;

                   }

         }

         for(i=99;i>=0;i--)

         {

                   if(c[i]!=0)

                   {j=i;break;}

    }

    for(i=j;i>=0;i--)

    printf("%d",c[i]);

}

目录
相关文章
|
网络协议 Linux Shell
localhost 和 127.0.0.1 的区别
localhost 和 127.0.0.1 的区别
1263 1
localhost 和 127.0.0.1 的区别
|
6月前
|
存储 人工智能 Cloud Native
【2025云栖大会】AI原生搜索引擎:Elasticsearch 换“芯”
9月26日,云栖大会AI搜索与向量引擎分论坛上,阿里云智能集团技术专家 魏子珺 和爱橙科技技术专家 周文喆,详细阐释了 “AI 原生搜索引擎:Elasticsearch 换芯” 技术主题,重点围绕 AI 原生搜索内核增强技术的升级与替换。通过核心能力重构,让 Elasticsearch 在 AI 原生时代具备更强的多模态理解、自然语言处理以及深度任务执行能力,为搜索场景带来性能、智能化与可扩展性的大幅提升。
646 0
|
人工智能 算法 架构师
GEO技术讲师哪个靠谱?谁有实力?
AI推荐常陷“声量陷阱”,难辨真伪专家。识别靠谱技术讲师需三重考验:深研认知逻辑、构建系统架构、通过商业实战。
|
7月前
|
移动开发 小程序 前端开发
小程序制作平台有哪些?哪个好
小程序开发领域,开发方式呈现出丰富多样的态势。开发团队需结合自身技术储备、项目具体需求以及可用资源等多方面因素,审慎挑选最为契合的开发途径。接下来,将为您详细阐述几种主流的小程序开发方式。
393 1
|
存储 移动开发 算法
Quorum NWR:通过仲裁实现数据一致性
Quorum NWR:通过仲裁实现数据一致性
380 12
|
10月前
|
存储 运维 安全
【转】服务器托管服务:优势解析与决策指南
服务器托管服务通过专业数据中心提供稳定IT基础设施,帮助企业与个人降低成本、提升安全性与运维效率。相较自建机房,其优势包括成本节约、高可用性、网络安全防护、7×24技术支持及灵活扩展能力。本文深入解析五大核心价值、对比自建与托管模式差异,并提供服务商选择指南,助力企业做出明智决策。
494 0
|
11月前
|
机器学习/深度学习 API C语言
扫雷游戏(已优化版)
本文详细介绍了如何用C语言实现经典的扫雷游戏。首先通过两个11×11的字符数组(`mine`存放地雷信息,`show`存放排雷信息)来构建游戏棋盘,并通过初始化、布置地雷、打印棋盘等步骤完成基本功能。为解决边界问题,将实际9×9棋盘嵌套在11×11数组中,避免越界操作。接着实现了扫雷逻辑,包括递归展开空白区域、标记和取消标记地雷等功能。此外,还加入了难度选择、颜色设置和提示机会等优化功能,使游戏更具互动性和挑战性。代码结构清晰,功能模块化,适合初学者学习和扩展。
419 0
|
敏捷开发 人工智能 JavaScript
通义灵码AI程序员功能体验评测
通义灵码插件新版本支持AI程序员功能,帮助我在VSCode中实现类似dify或fastgpt的智能体工作流功能(基于Vue)。初步体验显示,AI对需求理解深刻,能生成框架代码并以版本新增模式体现。但快照切换存在小瑕疵,如顺序反了和需手动点击切换按钮。总体而言,该功能有助于结对编程和代码审查,提升开发效率。
813 19
|
存储 人工智能 算法
AAAI 2025| S5VH: 基于选择性状态空间的高效自监督视频哈希
AAAI 2025 论文 S5VH 提出基于选择性状态空间模型的高效自监督视频哈希方法,通过双向 Mamba 层和 Self-Local-Global 学习范式,显著提升视频检索性能与推理效率。
770 16
|
Java 应用服务中间件 Spring
SpringBoot 响应请求是串行还是并行?
Spring Boot 在默认情况下通过 Servlet 容器的线程池实现并行处理 HTTP 请求。通过适当的线程池配置,可以进一步优化并发性能。此外,Spring Boot 提供了异步处理机制(如使用 `@Async` 注解)和反应式编程模型(Spring WebFlux),使得应用能够处理更高的并发负载。在具体项目中,可以根据需求选择合适的处理模型,以充分利用 Spring Boot 的并发处理能力。
557 21

热门文章

最新文章