zoukankan      html  css  js  c++  java
  • 华为測试 超长整数相加

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

    输入两个字符串数字

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


  • 相关阅读:
    fishredux 大体流程
    flutter Container组件和Text组件
    vue 页面跳转以及传参
    mySql 查询当天、本周、最近7天、本月、最近30天的语句
    Flutter编译时下载依赖报错的解决方案
    计算属性和方法
    计算属性传参
    原生js发送请求
    MySQL数据库连接
    flask 蓝图
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5091193.html
Copyright © 2011-2022 走看看