A × B problem(大数相乘算法)
发布时间:2020-12-14 02:53:32 所属栏目:大数据 来源:网络整理
导读:#include stdio.h#include string.h int main(){ char a[101],b[101];//定义a,b数组! int i,j,k,cas,count=1,num2,num3; scanf("%d",cas);//获取数据的组数 getchar(); while(cas--) { int c[10000]={0};//定义一个整型数组c scanf("%s %s",a,b);//获取字符
#include <stdio.h> #include <string.h> int main() { char a[101],b[101];//定义a,b数组! int i,j,k,cas,count=1,num2,num3; scanf("%d",&cas);//获取数据的组数 getchar(); while(cas--) { int c[10000]={0};//定义一个整型数组c scanf("%s %s",a,b);//获取字符串a,b num2=strlen(a);//num2为数组a的长度 num3=strlen(b);//num3为数组c的长度 getchar(); if(strcmp(a,"0")==0||strcmp(b,"0")==0)//当字符串a和字符串b为0时! { printf("Case %d:n",count); printf("%s * %s = 0n",b); count++; } else { for(i=0;i<num2;i++) { for(j=0;j<num3;j++) { c[i+j]+=(a[num2-i-1]-'0')*(b[num3-j-1]-'0');//这个得用纸画才好理解! k=i+j; while(c[k]>=10) { c[k+1]+=c[k]/10;c[k]%=10;k++;} } } i=9999;num2=i;//num2记录的是字符串c的长度! while(c[i]==0)//当c[i]==0说明字符串前置为0,就要后移,找到实际数! { i--;num2= i; } printf("Case %d:n",count); count++; printf("%s * %s = ",b); for(i=num2;i>=0;i--) {printf("%d",c[i]);} printf("n");} if(cas>=1)//当cas>=1的时候,每次执行完,空一行! {printf("n");} } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |