加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数乘以大数

发布时间:2020-12-14 03:07:23 所属栏目:大数据 来源:网络整理
导读:#includecstdio #includestring.h #includemalloc.h #includestdlib.h #define M 1000000 void mul(char*a,char*b) { ?int i,j,k,alen,blen; ?? int *c; ?? char *ret; ??? alen=strlen(a); ??? blen=strlen(b); ??? ?c=(int*)malloc(sizeof(int)*(alen+blen

#include<cstdio>
#include<string.h>
#include<malloc.h>
#include<stdlib.h>
#define M 1000000

void mul(char*a,char*b)
{
?int i,j,k,alen,blen;
?? int *c;
?? char *ret;
??? alen=strlen(a);
??? blen=strlen(b);
???
?c=(int*)malloc(sizeof(int)*(alen+blen));
?for(i=0;i<alen+blen;i++)
????? c[i]=0;
?
? for(i=0;i<alen;i++)
?? ?for(j=0;j<blen;j++)
?? ?? c[i+j+1]+=(a[i]-'0')*(b[i]-'0');?
???
???for(i=alen+blen-1;i>=0;i--)
??? {
????? if(c[i]>9)
????? {
???? ?c[i-1]+=c[i]/10;
???? ?c[i]%=10;
????? }
?????? }
????
?????? i=0;
?????? while(c[i]==0)//跳过头部的0
???????? i++;
?????
????? ret=(char*)malloc(sizeof(char)*(alen+blen));
???????? for(j=0;i<alen+blen;i++,j++)
?????????? ret[j]=c[i]+'0';
?????????? ret[j]='';
???? free(c);

???? for(i=0;i<alen+blen;i++) ??? printf("%c",ret[i]); ??? printf("n"); ???free(ret); } int main() { ?char *a,*b; ?a=(char*)malloc(sizeof(char)*M); ?b=(char*)malloc(sizeof(char)*M); ?int T; ?scanf("%d",&T); ?while(T--) ?{ ??scanf("%s%s",a,b); ??mul(a,b); ??free(a); ??free(b);? ?} ?return 0; }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读