华为測试 超长整数相加[通俗易懂]

华为測试 超长整数相加

大家好,又见面了,我是全栈君。

请设计一个算法完毕两个超长正整数的加法。

输入两个字符串数字

输出相加后的结果。string型

例子输入:99999999999999999999999999999999999999999999999999

                    1

例子输出:100000000000000000000000000000000000000000000000000

#include<iostream>
#include<string>
using namespace std;
string add(string num1,string num2);
int main()
{
	string add1,add2,anser;
	cin>>add1;
	cin>>add2;
	anser=add(add1,add2);
	cout<<anser<<flush;
	return 0;
}
string add(string add1,string add2)
{
	int MaxLen,jia1,jia2,jia,tenbit=0;
	char temp;
	string::iterator iter;
	string::reverse_iterator iter1,iter2;
	if(add1.size()>=add2.size())
	{
		MaxLen=add1.size();
		iter=add2.begin();
		add2.insert(iter,MaxLen-add2.size(),'0');
	}
	else
	{
		MaxLen=add2.size();
		iter=add1.begin();
		add1.insert(iter,MaxLen-add1.size(),'0');
	}
	 for(iter1=add1.rbegin(),iter2=add2.rbegin();iter1!=add1.rend(),iter2!=add2.rend();++iter1,++iter2)
	 {
		 if(iter1==add1.rend()-1 && iter2==add2.rend()-1)//处理最高位相加
		 {
			 jia1=*iter1-'0';
			 jia2=*iter2-'0';
			 jia=(jia1+jia2+tenbit)%10;
			 tenbit=(jia1+jia2+tenbit)/10;
			 *iter1=jia+'0';
			 if(tenbit>0)//若最高位有进位,向前产生数字1
				add1.insert(add1.begin(),'1');
		 }
		 else
		 {
			jia1=*iter1-'0';
			jia2=*iter2-'0';
			jia=(jia1+jia2+tenbit)%10;
			tenbit=(jia1+jia2+tenbit)/10;
			*iter1=jia+'0';
		 }
	 }
	return add1;
	
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116485.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • phpstorm2021.12.13激活【中文破解版】

    (phpstorm2021.12.13激活)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html4D5UJRVIF9-eyJsaWNlbnNlSWQi…

    2022年3月30日
    44
  • Jenkins学习——Jenkins是什么

    Jenkins学习——Jenkins是什么Jenkins是什么     对于Jenkins是什么,百度百科给的答案是这样的:Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。     通过这句话,我们可以得到这样的一个信息——Jenkins是一个开源的东东,好像跟持续集成开发有关系(然而我们并不知道持续集成开发是什么东东)。     通俗的说,就我目前的理解

    2022年5月5日
    45
  • LabVIEW图像灰度分析与变换(基础篇—4)

    LabVIEW图像灰度分析与变换(基础篇—4)图像分析是将图像的像素灰度统计和测量技术结合,使机器可以理解图像内容,并提取特征信息以实现智能检测目的的学科。图像分析更侧重于对图像内容的分析、解释和识别。

    2022年6月16日
    55
  • java 取余 负数_Java中有关负数取余的计算[通俗易懂]

    java 取余 负数_Java中有关负数取余的计算[通俗易懂]Java中有关负数取余的计算先看测试代码:publicclassSolution{publicstaticvoidmain(String[]args){System.out.println(“2%3=”+2%3);System.out.println(“2%-3=”+2%-3);System.out.println(“-2%3=”+-2…

    2022年5月22日
    34
  • H264解码流程

    H264解码流程H264解码过程比较复杂,这里仅简要概述大致流程如果是非黑即白的二值图像,不压缩的情况下一个像素只需要1个bit。如果是256种状态的灰度图像,不压缩的情况下一个像素需要8bit(1字节,256种状态)。如果用256种状态标识屏幕上某种颜色的灰度,而屏幕采用三基色红绿蓝(RGB),不压缩的情况下一个像素需要占用24bit(3字节),这个就是常说的24位真彩色。…

    2022年6月29日
    40
  • 同名的cookie会不会存在多个

    同名的cookie会不会存在多个

    2021年10月31日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号