任意长度正整数加法

本文介绍了一种使用C++实现的任意长度整数加法算法。该算法通过字符串输入两个整数,然后利用栈来逐位进行加法运算,并处理进位。此方法能够有效地处理大整数相加的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    任意长度加法的实现,没有考虑负数的情况。

#include <iostream>
#include 
<stack>
#include 
<string>

using namespace std;

int inline cti(char c)
{
 
return (c - '0');
}

int main()
{
 
string a,b,max,min;
 
int i, len ,cr ,tmp;
 stack
<int> si;
 
while(cin >> a >> b)
 {
  max 
= a.length() > b.length() ?  a : b ;
  min 
= a.length() > b.length() ?  b : a ;
  len 
= max.length() - min.length() ;
  cr 
= 0;
  
for( i = min.length() - 1 ; i >= 0 ; i --) {
   tmp 
= cr + cti(min[i]) + cti(max[len + i]);
   cr 
= tmp / 10 ;
   si.push(tmp 
% 10);
  }
  
for(i = len - 1 ; i >= 0 ; i --) {
   tmp 
= cr + cti(max[i]);
   cr 
= tmp /10;
   si.push(tmp 
% 10);
  }
  
while(cr) {
   si.push(cr 
% 10);
   cr 
/= 10;
  }
  
while(!si.empty()) {
   cout 
<< si.top() ;
   si.pop();
  }
  cout 
<< endl;

 }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值