模板——大数相乘

来源:互联网 发布:好的枕头 知乎 编辑:程序博客网 时间:2024/05/22 02:10

两个大数相乘

# include<stdio.h># include<string.h># include<algorithm>using namespace std;char a[300],b[300];int main(){while(scanf("%s%s",a,b)!=EOF){  if(a[0]=='0'||b[0]=='0')  {  printf("0\n");  continue;  }  int length_a=strlen(a);  int length_b=strlen(b);  reverse(a,a+length_a);  reverse(b,b+length_b);  int ans[600];  memset(ans,0,sizeof(ans));  for(int i=0;i<length_a;i++)  {  int temp[600],s,c=0;  memset(temp,0,sizeof(temp));  for(int j=0;j<length_b;j++)  {  s=(a[i]-48)*(b[j]-48)+c;  temp[j+i]=s%10;  c=s/10;  }  int cycle=0;  while(c!=0)  {    temp[cycle+i+length_b]=c%10;c/=10;cycle++;  }  c=0;  for(int k=0;k<600;k++)  {  s=temp[k]+ans[k]+c;  ans[k]=s%10;  c=s/10;  }  }  int sign;  for(int i=599;i>=0;i--)  {  if(ans[i])  {  sign=i;  break;  }  }  for(int i=sign;i>=0;i--)printf("%d",ans[i]);  printf("\n");}return 0;}


0 0
原创粉丝点击