大数乘法

模板题,不过这种方法对于位数过大是行不通的,比如hdoj这道题,需要用到FFT


#include<bits/stdc++.h>
using namespace std;
char a[100],b[100];
int x[110],y[110],z[210];
int main()
{
    int len1,len2,i,j;
    scanf("%s",a);
    scanf("%s",b);
    len1=strlen(a);
    len2=strlen(b);
    for(j=0,i=len1-1;i>=0;i--) x[j++]=a[i]-'0';
    for(j=0,i=len2-1;i>=0;i--) y[j++]=b[i]-'0';
    for(i=0;i<len1;i++)
        for(j=0;j<len2;j++)
        z[i+j]=z[i+j]+x[i]*y[j];
    for(i=0;i<200;i++)
    if(z[i]>=10)
    {
        z[i+1]=z[i+1]+z[i]/10;
        z[i]=z[i]%10;
    }
    for(i=200;i>0;i--)
    {
        if(z[i]==0)
            continue;
        else break;
    }
    for(;i>=0;i--)
        printf("%d",z[i]);
    printf("\n");
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41061455/article/details/80316211