
/**//**************************************
Problem: POJ 1503 Integer Inquiry
Time: 0MS
Memory: 216K 
Accepted Time: 2009-05-17 09:38:39
Tips: 高精度加法 
**************************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void add(char *a,char *b)


{
    char *pmax,*pmin;
    int lmax=strlen(a),lmin=strlen(b),i,j,k;
    if(lmax>lmin)

    
{
        pmax=a;
        pmin=b;
    }
    else

    
{
        i=lmax;
        lmax=lmin;
        lmin=i;
        pmax=b;
        pmin=a;
    }
    char *s=new char[lmax+2];
    s[0]='0';s[lmax+1]=0;
    int flag=0;
    for(i=lmax-1,j=lmin-1,k=lmax;j>=0;i--,j--,k--)

    
{
        s[k]=pmax[i]+pmin[j]-'0'+flag;
        if(s[k]>'9')

        
{
            s[k]-=10;
            flag=1;
        }
        else flag=0;
    }
    for(;i>=0;i--,k--)

    
{
        s[k]=pmax[i]+flag;
        if(s[k]>'9')

        
{
            s[k]-=10;
            flag=1;
        }
        else flag=0;
    }
    if(flag==1)

    
{
        s[0]++;
        strcpy(a,s);
    }
    else strcpy(a,s+1);
    delete s;
}
int main()


{
    char a[10009],b[109];
    scanf("%s",a);
    while(scanf("%s",b),strcmp(b,"0")!=0)

    
{
        add(a,b);
    }
    printf("%s\n",a);
    //system("pause");
    return 0;
} 

 
 
             
            posted @ 
2009-05-17 12:38 
主函数 
阅读(
414) 
评论() 
 
收藏 
举报