poj2389(大数相乘)

1.注意最终达到的位数。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char stra[45],strb[45];
int c[100];
int main()
{
    
    
    int lena,lenb,flag=0;
    memset(c, 0, sizeof(c));
    scanf("%s%s",stra,strb);
    //printf("stra=%s\n",stra);
    //printf("strb=%s\n",strb);
    lena=strlen(stra);
    lenb=strlen(strb);
    //printf("lena=%d lenb=%d\n",lena,lenb);
    for(int i=0;i<lena;i++)
    {
    
    
        for(int j=0;j<lenb;j++)
        {
    
    
            c[i+j+1]=c[i+j+1]+(stra[i]-'0')*(strb[j]-'0');
        }
    }
    for(int i=lena+lenb-1;i>0;i--)
    {
    
    
        if(c[i]>=10)
        {
    
    
            c[i-1]=c[i-1]+c[i]/10;
            c[i]=c[i]%10;
        }
    }
    for(int i=0;i<lena+lenb-1;i++)
    {
    
    
        if(!flag&&c[i]==0)
        {
    
    
            continue;
        }
        flag=1;
        printf("%d",c[i]);
    }
    printf("%d\n",c[lena+lenb-1]);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/mingjiweixiao/article/details/113757829