poj2389 大数乘法

poj2389 大数乘法
#include < iostream >
#include
< string >
using   namespace  std;

string  BigIntegerMult( const   string   & str1, const   string   & str2)
{  
    
string ans;
    
int index,i,j;
    
int len1,len2;

    len1
=str1.length();
    len2
=str2.length();

    unsigned 
int *total=new unsigned int[len1+len2+2];
    unsigned 
int *integ1=new unsigned int[len1];
    unsigned 
int *integ2=new unsigned int[len2];

    index
=0;
    
for(i=len1-1;i>=0;--i)
    
{
        integ1[index
++]=str1[i]-'0';
    }


    index
=0;
    
for(i=len2-1;i>=0;--i)
    
{
        integ2[index
++]=str2[i]-'0';
    }

    
    memset(total,
0,sizeof(unsigned int)*(len1+len2+2));

    
for(i=0;i<len1;i++)
        
for(j=0;j<len2;j++)
        
{
            total[i
+j]+=integ1[i]*integ2[j];
        }


    
for(i=0;i<len1+len2+1;i++)
    
{
        
if(total[i]>9)
        
{
           total[i
+1]+=total[i]/10;
           total[i]
=total[i]%10;
        }

    }

    
    
bool flag=false;
    
for(i=len1+len2+1;i>=0;i--)
    
{
        
if(flag||total[i])
        
{
            flag
=true;
            ans
+=total[i]+'0';
        }

    }

    
if(!flag)
        ans
+='0';

    delete [] integ1;
    delete [] integ2;
    delete [] total;

    
return ans;
}


int  main()
{
    
string str1,str2,str;
    cin
>>str1>>str2;
    str
=BigIntegerMult(str1,str2);
    cout
<<str<<endl;
    
return 0;
}

你可能感兴趣的:(poj2389 大数乘法)