• 华为測试 超长整数相加


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

    输入两个字符串数字

    输出相加后的结果。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;
    	
    }


  • 相关阅读:
    xScrapBook
    使用STL仿函数和判断式来降低复杂性并改善可读[转]
    C++ 开源程序库[转]
    资源泄漏的悲剧
    Excel导入的HDR=YES; IMEX=1详解
    largeint.lib
    共享刚写的简单DirectUI库 只实现了思想
    document.body.scrollTop的值总为零的解决办法
    CDCHandle谨慎使用
    C++中std::tr1::function和bind 组件的使用
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5091193.html
Copyright © 2020-2023  润新知