记录编号 251688 评测结果 AAAAAAAAAAAA
题目名称 39.高精度乘法 最终得分 100
用户昵称 LOSER 是否通过 通过
代码语言 C++ 运行时间 0.000 s
提交时间 2016-04-18 15:25:57 内存使用 0.00 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#define mem(arr,arl) memset(arr,arl,sizeof(arr))
using namespace std;
const int maxn=1100;
void Multi(int a[],int b[],int c[]){
	for(int i=1;i<=a[0];i++){
		for(int j=1;j<=b[0];j++){
			c[i+j-1]+=a[i]*b[j];
			c[i+j]+=c[i+j-1]/10;
			c[i+j-1]%=10;
		}
	}
	if(c[a[0]+b[0]])c[0]=a[0]+b[0];
	else c[0]=a[0]+b[0]-1;
	while(c[c[0]]==0&&c[0]>1)c[0]--;
	for(int i=c[0];i>0;i--)
		printf("%d",c[i]);
}
int MY(){
	freopen("mul.in","r",stdin);
	freopen("mul.out","w",stdout);
	char s1[maxn],s2[maxn];
	scanf("%s%s",s1+1,s2+1);
	int len1=strlen(s1+1),len2=strlen(s2+1);
	//printf("%d %d\n",len1,len2);
	int a[maxn],b[maxn],c[maxn];
	mem(a,0);mem(b,0);mem(c,0);
	a[0]=len1,b[0]=len2;
	for(int i=1;i<=len1;i++)a[len1-i+1]=s1[i]-'0';
	for(int i=1;i<=len2;i++)b[len2-i+1]=s2[i]-'0';
	if((a[0]==1&&a[1]==0)||(b[0]==1&&b[1]==0)){printf("0");return 0;}
	Multi(a,b,c);
	//for(int i=1;i<=len1;i++)printf("%d",a[i]);
	return 0;
}int YOU=MY();
int main(){;}