模板_大整数加法

//
#include<bits/stdc++.h>
using namespace std;
#define mem( a,v ) memset( a,v,sizeof( a ) )

const int N=1111;

int main()
{
    char a[N],b[N],ans[N];                  // string 实现较为困难
    int len,pro,i;

    mem( a,0 ); mem( b,0 ); mem( ans,0 );   // init

    cin>>a>>b;
                                            // 终点
    len=strlen(a)>strlen(b) ? strlen(a) : strlen(b) ;
    
    reverse( a,a+strlen(a) );               // 翻转
    reverse( b,b+strlen(b) );
    
    for( i=0;a[i];i++ ) a[i]-='0';          // 预处理
    for( i=0;b[i];i++ ) b[i]-='0';

    pro=0;                                  // 进位
    for( i=0;i<=len;i++ )
    {
        ans[i]=( pro+a[i]+b[i] )%10;
        pro=( pro+a[i]+b[i] )/10;
    }
    for( i=len; i && ans[i]==0 ;i-- );
    for( ;~i;i-- ) cout<<(int)ans[i];		// int 转换 
    cout<<endl;

    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_63173957/article/details/125125248
今日推荐