大整数相乘问题

    昨天在CSDN上看到一个大整数相乘的面试题!哗~~~~好像好久没练习过了,一起也不知怎么下手!!看看楼主的答案!!!但是看不出什么~~~~~唉~~~这段时间都没什么练习啦~~~~~感觉应该不难呀!!~~~~于是这个问题一直在我脑海里打转~~~~~~把它做出来!!(这段时间都在忙复习,还要赶课程设计,这样的小算法题突然觉得很生外了哈~~~~)

以下是我的实现方案:

#include<iostream>

using namespace std;

static int a[10] = {9,3,2,6,4,3};
static int b[10] = {3,7,1,5,5,6};
static int c[20];
//a:乘数1 na;a的位数
//b:乘数2 nb:b的位数
//c:保存积
int mul(int na, int nb)
{
 int i,j,k,l;
 

 for(i=0;i<na;i++)
 {
  k=i;
  for(j=0;j<nb;j++)
  {
   c[k] = c[k]+b[j]*a[i];
   l = k;
   while(c[l]>=10)
   {
    c[l+1] += (c[l]/10);
    c[l] %= 10;
    l++;
   }  
   k++;
  }


 }
 
 return k;
}

int main()
{
 mul(6,6);

 
 int i=20;
 while( c[i--] ==0 );
 i++;
 for(;i>=0;i--)
  cout<<c[i];
 cout<<endl;

 return 0;
}

----------------------------------------

由于只是想试试做出来,所以没什么再深入下去了~~~~试了几个数可以通过!!不过就要自已指定输入值和位数!:)

还要赶着英语六级呀~~~~~~惨!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值