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

模板——大数相乘

发布时间:2020-12-14 03:40:29 所属栏目:大数据 来源:网络整理
导读:两个大数相乘 # includestdio.h# includestring.h# includealgorithmusing namespace std;char a[300],b[300];int main(){while(scanf("%s%s",a,b)!=EOF){ if(a[0]=='0'||b[0]=='0') { printf("0n"); continue; } int length_a=strlen(a); int length_b=str

两个大数相乘

# 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("0n");
			  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,sizeof(ans));
		  for(int i=0;i<length_a;i++)
		  {
			  int temp[600],s,c=0;
			  memset(temp,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;
}

(编辑:李大同)

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

    推荐文章
      热点阅读