uva10106

来源:互联网 发布:2016网络投资平台 编辑:程序博客网 时间:2024/05/18 11:50

 典型的大数乘法。根据公式,很容易算出,注意一下结果是0的值就很容易了

 

#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;

const int Max = 600;
int main(void)
{
 char a[260],b[260];
 int aa[260],bb[260],cc[Max];
 int i,j,len;
 
 while(cin >> a >> b)
 {
  memset(aa,0,sizeof(aa));memset(bb,0,sizeof(bb));memset(cc,0,sizeof(cc));
  for(i = 0;i < (len = strlen(a));++i) aa[i] = a[len - i - 1] - '0';
  for(i = 0;i < (len = strlen(b));++i) bb[i] = b[len - i - 1] - '0';
  
  /*for(i = 0;i < strlen(a);++i) cout << aa[i];   cout << endl;
  for(i = 0;i < strlen(b);++i) cout << bb[i];   cout << endl;*/
  
  for(i = 0;i < 260;++i)
   for(j = 0;j < 260;++j)
    if(i + j < Max)
     cc[i + j] += aa[i] * bb[j];
  
  for(i = 0;i < Max;++i)
  { 
    cc[i + 1] += cc[i] / 10;
    cc[i] %= 10;
  }
  
  for(i = Max - 1;!cc[i];i--);
  if(i <  0) cout << 0 ;//输出结果0
  else
  { 
   for(i;i >= 0;--i)
    cout << cc[i];
  }
  
  cout << endl;
 }
 
 system("pause");
 return 0;
}