POJ 1503 Integer Inquiry

/**************************************
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;
}
 

你可能感兴趣的:(Integer)