基础练习 高精度加法

蓝桥试题 基础练习 高精度加法 JAVA 问题描述   输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。 算法描述   由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。   定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数组B来存储b。   计算c = a + b的时候,首先将A[0]与B[0]相加,如果有进位产生,则把进位(即... 阅读详情

问题描述

输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。

算法描述

由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。
  定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数组B来存储b。
  计算c = a + b的时候,首先将A[0]与B[0]相加,如果有进位产生,则把进位(即和的十位数)存入r,把和的个位数存入C[0],即C[0]等于(A[0]+B[0])%10。然后计算A[1]与B[1]相加,这时还应将低位进上来的值r也加起来,即C[1]应该是A[1]、B[1]和r三个数的和.如果又有进位产生,则仍可将新的进位存入到r中,和的个位存到C[1]中。依此类推,即可求出C的所有位。
  最后将C输出即可。

输入格式

输入包括两行,第一行为一个非负整数a,第二行为一个非负整数b。两个整数都不超过100位,两数的最高位都不是0。

输出格式

输出一行,表示a + b的值。

样例输入

20100122201001221234567890
2010012220100122

样例输出

20100122203011233454668012

代码1

#include <iostream>
using namespace std;
#include<stdio.h>
#include<stdlib.h>
#include<cstring>
#include<math.h>
int a[101];//存放第一个大整数
int b[101];//存放第二个大整数
int num[101];//存放相加的结果
int main()
{
    string s1,s2;
    cin>>s1;//以字符串的方式输入
    cin>>s2;//以字符串的方式输入
    memset(a,0,sizeof(a));//用0清空
    memset(b,0,sizeof(b));//用0清空
    memset(num,0,sizeof(num));//用0清空
    int ale=s1.length();
    int ble=s2.length();
    int k=ale-1;//C++中字符串首地址从0开始编址
    for(int i=0;i<=ale-1;i++){
        a[i]=(int)s1[k]-'0';//因为字符串的最后一位才是大整数的个位
        k--;
    }
    k=ble-1;
    for(int i=0;i<=ble-1;i++){
        b[i]=(int)s2[k]-'0';//因为字符串的最后一位才是大整数的个位
        k--;
    }
    //对两个数组内进行逐位相加
    int t=0;//t用来表示对应两位相加的进位,t=0或t=1
    //a[0],b[0]中存放的是个位数
    //本次循环遍历完较小的那个整数
    for(int i=0;i<=min(ale-1,ble-1);i++){
        num[i]=(a[i]+b[i]+t)%10;
        t=(a[i]+b[i]+t)/10;
    }
    //从较小大整数往后遍历完较大的那个大整数
    for(int j=min(ale-1,ble-1)+1;j<=max(ale-1,ble-1)+1;j++){
        num[j]=(a[j]+b[j]+t)%10;
        t=(a[j]+b[j]+t)/10;
    }
    //以上两个循环可以合并
    //输出结果数组
    if(num[max(ale-1,ble-1)+1]==0){//如果最高位没有进位
        for(int i=max(ale-1,ble-1);i>=0;i--)//循环max(ale-1,ble-1)次
            cout<<num[i];
    }else{//如果最高位有进位,循环max(ale-1,ble-1)+1次
        for(int i=max(ale-1,ble-1)+1;i>=0;i--)
            cout<<num[i];
    }
    return 0;
}

代码2

#include <iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<algorithm>
#include<math.h>
using namespace std;
int a[1001];
int b[1001];
int c[1003];

int main()
{
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	memset(c,0,sizeof(c));
	char ch;
	int alen=0,blen=0;
	//每次以字符串形式输入a
	while(scanf("%c",&ch) && ch!='\n'){
		a[++alen] = ch - '0';
	}
	//每次以字符串形式输入b
	while(scanf("%c",&ch) && ch!='\n'){
		b[++blen] = ch - '0';
	}
	//对a,b数组逆序
	for(int i=1;i<=alen/2;i++)
		swap(a[i],a[alen+1-i]);
	for(int i=1;i<=blen/2;i++)
		swap(b[i],b[blen+1-i]);
	//定义c数组长度clen,进位暂存位temp
	int clen = 0;
	int temp = 0;//是否进位,temp = 1或0
	for(int i=1;i<=max(alen,blen);i++){
		c[i] = (a[i] + b[i] + temp)%10;
		temp = (a[i] + b[i] + temp)/10;
		clen++;
	}
	if(temp != 0)//如果最高位还有进位
		c[++clen] = temp;
	//逆序输出c
	for(int i=clen;i>=1;i--)
		cout<<c[i];
    return 0;
}

在这里插入图片描述

蓝桥杯-基础练习 高精度加法 蓝桥杯-基础练习 高精度加法 问题描述   输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。 算法描述   由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。   定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数组B来存储b。   计算c = a + b的时候,首先将A[0]与B[0]相加... 阅读详情

相关推荐

解密Android相机框架:从HAL到应用层的全链路解析

本文深入解析Android相机框架的全链路架构,从应用层到硬件抽象层(HAL)再到驱动层,详细介绍了CamX-CHI架构的设计哲学与实战应用。通过HAL3接口、V4L2交互机制及Camera2 API的最佳实践,帮助开发者优化相机性能,解决多摄切换、预览卡顿等常见问题,提升成像效率与稳定性。

weixin_29238147的博客 408

高精度加法怎么搞?

对于输入的两个不超过100位数字的非负整数,给出两数之和。

wulayuyuyu的博客 412

SRA数据下载的一个坑

SRA数据真坑啊!

xuzhougeng blog 3508

写一个加法程序,输入整数a,b,输出他们的和。

#include<stdio.h> int main(void) { int a,b,c; //Please input a,b: scanf("%d,%d",&a,&b); c =a + b; printf("%d+%d=%d\n",a,b,c); return 0; }

Acceleration_的博客 2801

FPGA图像处理入门 ZYNQ7020 图像中值膨胀腐蚀滤波

图像处理的三种滤波 中值滤波应用较为广泛 综合膨胀和腐蚀可以实现边缘检测。

Coast_的博客 715

汽车软件工程师必看:ASPICE开发流程全解析(附各阶段交付物清单)

本文全面解析了汽车行业广泛采用的ASPICE开发流程,详细介绍了从需求挖掘到系统架构设计、软件工程及测试验证各阶段的关键操作和交付物清单。针对汽车软件工程师,提供了实用的协作指南和工具推荐,帮助团队提升开发效率并降低项目风险,是掌握ASPICE标准的必备指南。

weixin_30733003的博客 638

【C语言】计算高精度加法(很长的整数相加)

由键盘输入两个位数很长的整数(一行一个,最多不超过80位),计算并输出这两个数的和。

weixin_47135547的博客 5305

2021秋招IC验证面经-ARM中国/中科芯/飞腾/地平线/中兴

中科芯 (央企福利待遇好,但是百分百不解决户口,适合当地人进去躺平。) 现场面试,三个面试官,时间大约40min 首先介绍一下自己,介绍一下项目。所做项目用到了FIFO吗,深度是多少,位宽是多少,仲裁算法是什么? 验证环境中的reference model是自己写的还是本身就有的,仲裁怎么在参考模型中实现,参考模型怎么获取寄存器的值? 怎么配置RTL寄存器,通过平台的寄存器模型进行寄存器配置,寄存器模型里边的方法,写一个寄存器或读一个寄存器怎么实现? 寄存器如何实现前门访问和后门访问,后门访问时

weixin_48014653的博客 6318

3.C++秒懂高精度数

C++高精度数加法运算的进位问题知识

yyds_WXY的博客 963

基于Quartus II软件的FPGA综合实验——多功能数字钟

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、设计要求二、设计原理三、设计过程1.数码管扫描模块2.计时模块3.闹钟模块4.闹钟响铃模块5.数码管显示模块6.整点报时功能7.模式选择模块(计时器主控电路)四、实验中遇到的困难及解决方案五、总结 前言 FPGA综合实验——多功能数字钟 基于Quartus II软件 一、设计要求 设计一个能进行时、分、秒计时的十二小时制或二十四小时制的数字钟,并具有定时与闹钟功能,能在设定的时间发出闹铃音,能非常方便地对小时、分钟和秒进.

qq_53022342的博客 2万+

如何使用Python爬取并保存网页上的所有附件

爬虫(Crawler)是一种自动化程序,它通过模拟人工访问网页并下载网页上的数据或文件,常用于数据采集和分析。爬虫通常以“爬取”的形式自动浏览和提取网页中的各种信息。本文详细介绍了如何使用Python爬取并保存网页中的附件文件,涵盖了网页解析、文件下载、多线程与异步优化等内容。希望通过本文的讲解,能够帮助你理解并掌握附件爬取的技巧。在实际应用中,爬虫开发不仅需要解决技术问题,还要遵守网络道德和法律法规,避免不当使用爬虫造成负面影响。

2201_76125261的博客 965

蓝桥杯 基础练习 高精度加法 (vip)

蓝桥杯 基础练习 高精度加法 (vip) 代码: #include&lt;stdio.h&gt; #include&lt;string.h&gt; int main() { char a[110],b[110],c[110]; memset(c,0,sizeof(c));//防止出现乱码,清零 int len1,len2,i; scanf("%s%s"...

Qi2456的博客 444

ROS从入门到精通0-4:VSCode 搭建 ROS 工程环境

为了提高开发效率,可以先安装集成开发工具和使用方便的工具,本教程用VSCode搭建ROS工程环境

FRIGIDWINTER的博客 1万+

[蓝桥杯][基础练习VIP]高精度加法/大数加法

[蓝桥杯][基础练习VIP]高精度加法 时间限制: 1Sec 内存限制: 128MB 提交: 1845 解决: 705 题目描述 输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。 算法描述 由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。 定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数...

LSZ_179的博客 286

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

蓝桥杯 基础练习VIP 高精度加法 java

蓝桥杯 基础练习VIP 高精度加法 java 题目 题目描述 输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。 算法描述 由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。 定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数组B来存储b。 计算c = a + b的时候,首先将A[0]...

向南的博客 1347

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

蓝桥杯 BASIC-29 基础练习 高精度加法

计算c = a + b的时候,首先将A[0]与B[0]相加,如果有进位产生,则把进位(即和的十位数)存入r,把和的个位数存入C[0],即C[0]等于(A[0]+B[0])%10。然后计算A[1]与B[1]相加,这时还应将低位进上来的值r也加起来,即C[1]应该是A[1]、B[1]和r三个数的和.如果又有进位产生,则仍可将新的进位存入到r中,和的个位存到C[1]中。定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。

qq_44704533的博客 276

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

python 基础练习 高精度加法

python 基础练习 高精度加法 问题描述   输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。 算法描述   由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数组B来存储b。计算c = a + b的时候,首先将A[0]与B[0]相加,如果...

weixin_42525656的博客 385

C语言 蓝桥杯 试题 基础练习 高精度加法

问题描述   输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。 算法描述   由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。   定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数组B来存储b。   计算c=a+b的时候,首先将A[0]与B[0]相加,如果有进位产生,则把进位(即和的十位数)存入r,把和的个位数存入C[0],即C[0]等于(A[0]+B[0])%10。然后计算A[1]...

Insane_Outlier的博客 569

python基础练习 高精度加法(附代码)

(附详细代码教程)输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。

阿极的博客 1035

蓝桥杯 VIP 基础练习 高精度加法

基础练习 高精度加法   时间限制:1.0s   内存限制:512.0MB        问题描述   输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。 算法描述   由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。   定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位

colorfulshark 2029

Java基础练习 高精度加法

资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述   输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。 算法描述   由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。   定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数组B来存储b。   计算c = a + b的时候...

qq_43457097的博客 370
上一篇: 算法训练 P0505
下一篇: 算法训练 集合运算
practical_sharp
博客等级 码龄8年 499粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值