您的位置:首页 > 其它

A * B Problem (Big integer versi…

2014-09-16 19:16 330 查看

1019:A * B Problem (Big
integer version) 【高精度】
Time Limit:1000MS
Memory Limit:65536K
Total Submit:243
Accepted:109
Page View:194
[Submit]
[Status]
[Discuss]
Font Size: Aa
Aa
Aa

Description

计算2个不超过40位的正整数的积.

Input

输入为2行,每一行代表一个数.

Output

输出一行,为2个数的乘积.

Sample Input

11111111111111

1111111111

Sample Output

12345679011110987654321

Hint

用数组!


 

#include<iostream>

#include<cstring>

using namespace std;

#define max 40 

char a[max],b[max];

int c[max*2];

int main()

{

   int i,j,k;

   memset(c,0,sizeof(c));

  
cin>>a>>b;

   int
alen=strlen(a),blen=strlen(b);

  
for(i=alen-1;i>=0;i--)

   
a[i]=a[i]-'0';

  
for(i=blen-1;i>=0;i--)

   
b[i]=b[i]-'0';

   k=-1;

  
for(i=alen-1;i>=0;i--)

   {

      
k=alen-1-i;

   
for(j=blen-1;j>=0;j--)

    {

    
c[k]+=a[i]*b[j];

  c[k+1]+=c[k]/10;

  c[k]=c[k];

  k++;

    }

   }

   bool flag=false;

  
for(i=max*2-1;i>=0;i--)

   {

    
if(flag)

  
cout<<c[i];

  else if(c[i])

  {

  cout<<c[i];

  flag=true;

  }

   }

 

  if(!flag)

  
cout<<"0";

  cout<<endl;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: