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

华为測试 超长整数相加

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

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

输入两个字符串数字

输出相加后的结果。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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • String、StringBuffer和StringBuilder的区别

    String、StringBuffer和StringBuilder的区别String、StringBuffer和StringBuilder的区别:文章目录StringStringBufferStringBuilderStringBuffer是如何实现线程安全的呢?Java9的改进String  String类是不可变类,即一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。  这个是String类的解释,之前小咸儿看…

    2022年6月28日
    30
  • gridview属性_datagridview设置列宽

    gridview属性_datagridview设置列宽usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Drawing;usingSystem.Windows.Forms;classSetDataViewGirdStyle{   privatestaticColor_mLinearBeginColor;

    2022年9月24日
    1
  • codemirror自定义代码提示_96图文编辑器

    codemirror自定义代码提示_96图文编辑器前提写这个的目的是因为之前项目里用到过CodeMirror,觉得作为一款在线代码编辑器还是不错,也看到过有些网站用到过在线代码编辑,当然我不知道他们是用什么做的,这里我把公司项目里用到的那部分抽出来,单独写篇博客,并把抽出来的那部分代码提交到GitHub去简单介绍CodeMirror是一款在线的支持语法高亮的代码编辑器。官网:http://codemirror.net/可…

    2022年8月14日
    5
  • 御用导航提示提醒_AR实景导航,让你安全驾驶,不再“绕弯”

    御用导航提示提醒_AR实景导航,让你安全驾驶,不再“绕弯”虽然现在手机、车机的导航能力越来越强,但是当我们遇到不熟悉的路况,特别是在立交桥和高速匝道口时还是会出拐错弯或错过路口的情况,而往往错过了一个出口,就意味着你要多跑几公里甚至更远!!基于当前复杂的行车环境,EASYOWN联合高德地图,推出了AR系列行车记录仪,在应对相关行车痛点问题上拥有完美的解决方案。EASYOWN-E3AR行车记录仪通过连接高德地图,在真实的路况信息中,加入3D…

    2022年5月7日
    1.4K
  • TPM管理解决制造型企业成本大问题的常用手段

    TPM管理解决制造型企业成本大问题的常用手段

    2021年6月21日
    135
  • uuid生成唯一数字_java组件有哪些

    uuid生成唯一数字_java组件有哪些UUID含义是通用唯一识别码(UniversallyUniqueIdentifier),这是一个软件建构的标准,也是被开源软件基金会(OpenSoftwareFoundation,OSF)的组织在分布式计算环境(DistributedComputingEnvironment,DCE)领域的一部份。UUID的目的,是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需

    2022年9月22日
    4

发表回复

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

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