随笔-68  评论-10  文章-0  trackbacks-0
#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;
}

posted on 2011-06-09 16:51 wuxu 阅读(294) 评论(0)  编辑 收藏 引用 所属分类: 高精度

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理