昨天在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;
}
----------------------------------------
由于只是想试试做出来,所以没什么再深入下去了~~~~试了几个数可以通过!!不过就要自已指定输入值和位数!:)
还要赶着英语六级呀~~~~~~惨!!!