Sicily 1159

本文介绍了一个使用C++实现的字符串加法算法,该算法能够处理任意长度的大整数相加问题。通过比较输入字符串的长度并调整较短字符串的长度以匹配较长字符串,确保了加法操作的正确性。此外,还详细展示了如何将字符转换为整数进行运算以及如何处理进位。


#include<iostream>
#include <string>
using namespace std;
int main()
{
 int m;
 while(cin>>m)
 {
 if(m==0)
 break;
 string num[100001];                     //存储输入的数据
 for(int i=0;i<m;i++)
  cin>>num[i];
 string n=num[0];
 for(int i=1;i<m;i++)
 {
     int a=num[i].length();             
     int b=n.length();
     string q;
     if(a>b)                           //比较两个数的长度,并在短的数前添加0,使其等长
      {
       q.assign(a-b,'0');
       n=q+n;
   }
      else
      {    
       q.assign(b-a,'0');
       a=b;
       num[i]=q+num[i];
      }
     int u=0;
  for(int j=a-1;j>=0;j--)           //求两数之和
     {
     int temp,temp1,temp2; 
  temp1=num[i][j]-'0';              //求得string中每一数对应的int数字
  temp2=n[j]-'0';  
  temp=temp1+temp2+u;
  if(temp>=10)
  {
         u=1;
   temp=temp%10; 
   n[j]=temp+'0';  
  }
  else
  {
    u=0;
    n[j]=temp+'0'; 
  }
     }
     if(u==1)
     {
      n='1'+n;
     } 
 }
 
 cout<<n<<endl;
}
 return 0;
}

1.  char与int转换     char=int+'0';

2. q.assign(a,'0');    对字符q赋予a个0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值