#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100
int num1[MAX],num2[MAX];
char str1[MAX],str2[MAX];
int ans1[MAX];
int i=0,j=0,k=0;
int len=0;
int len1,len2;
char* multip(char* str1,char* str2){
memset(ans1,0,sizeof(ans1));
len=(i>j?i:j)+4;
for (k=0;k<len;k++){
ans1[k]=num1[k]+num2[k];
}
for (k=0;k<len;k++){
if (ans1[k]>9){
ans1[k+1]+=ans1[k]/10;
ans1[k]%=10;
}
}
for (;len>=0;len--){
if (ans1[len]!=0) break;
else continue;
}
for (;len>=0;len--){
printf("%d",ans1[len]);
}
}
char* multip2(char* str1,char* str2){
memset(ans1,0,sizeof(ans1));
len=i*j+4;
int x=0,y=0;
for (x=0;x<i;x++)
for (y=0;y<j;y++){
ans1[x+y]+=num1[x]*num2[y];
}
for (k=0;k<len;k++){
if (ans1[k]>9){
ans1[k+1]+=ans1[k]/10;
ans1[k]%=10;
}
}
for (;len>=0;len--){
if (ans1[len]!=0) break;
else continue;
}
for (;len>=0;len--){
printf("%d",ans1[len]);
}
}
int main(void) {
scanf("%s%s",str1,str2);
len1=strlen(str1),len2=strlen(str2);
for(k=len1-1;k>=0;k--) num1[i++]=str1[k]-'0';
for(k=len2-1;k>=0;k--) num2[j++]=str2[k]-'0';
multip(str1,str2);
printf("\n");
multip2(str1,str2);
return 0;
}
c语言实现大整数相加相乘
最新推荐文章于 2023-03-11 17:55:22 发布