香港哪里买包最便宜:大整数相乘算法

来源:百度文库 编辑:偶看新闻 时间:2024/05/04 19:54:52

#include
#include
#define N 5
#define M 5
int res[M];

/*****
* Function: 大整数相乘算法
* 参数:
* a: 乘数
* b: 乘数
* n: a的长度
* m: b的长度
* 没有返回值,结果直接放到全局变量res数组中,如果不想要全局变量,也可以在函数中多加一个参数,保存结果。
*****/
void Multiply(char *a,char *b,int n,int m)            // 大整数相乘
{
    int i,j,temp,t,tt;
    int num=0;
    memset(res,0,sizeof(res));
    for(i=0;i    {
        temp=0;
        for(j=0;j        {    
            t=(a[n-1-j]-'0')*(b[m-1-i]-'0')+temp;
            if(0 == t)    
                continue;                
            num = j+i;        
            tt = res[num]+(t);    
            res[num] = tt%10;    
            temp = tt/10;
        }
        if( temp > 0 )
        {
            res[++num] += temp;
        }
    }
    for(i=num;i>=0;i--)                    // 输出结果
        printf("%d",res[i]);
    printf("\n");
}

int main()                             // a simple test
{
    char a[N],b[N];
    scanf("%s%s",a,b);
    int len1 = strlen(a);
    int len2 = strlen(b);
    Multiply(a,b,len1,len2);
    return 0;
}