大数问题学习周(1):POJ Grids 2981 大整数加法

#include  < iostream >
#include 
< string >
using   namespace  std;
int  main()
{
    
int  a[ 201 ] = { 0 },b[ 200 ] = { 0 },i,j,len,ls1,ls2,f = 0 //  相加后结果放在a内
     string  s;
    
    
for  (cin >> s,ls1 = s.length(),i = ls1 - 1 ,j = 0 ; i >= 0 ; i -- )
        a[j
++ ] = s[i] - ' 0 ' // 将第一个数逆序放入a数组
    
    
for  (cin >> s,ls2 = s.length(),i = ls2 - 1 ,j = 0 ; i >= 0 ; i -- )
        b[j
++ ] = s[i] - ' 0 ' // 将第二个数逆序放入b数组

    
for  (i = 0 ,len = ls1 > ls2 ? ls1:ls2; i < len; i ++ //  注意len取二者较大的值
    {
        a[i] 
+=  b[i];  // 相加结果放入a数组
         if  (a[i]  >=   10 )
        {
            a[i] 
%=   10 // 进位处理
            a[i + 1 ] ++ ;
        }
    }
    
    
if  (a[len]) printf( " %d " ,a[len]);  // 所谓的前导0
     for  (i = len - 1 ; i >= 0 ; i -- )
        printf(
" %d " ,a[i]);  // 输出主体部分
     return   0 ;
}

你可能感兴趣的:(大数问题学习周(1):POJ Grids 2981 大整数加法)