记录编号 419298 评测结果 AAAAAAAAAAAA
题目名称 增强的乘法问题 最终得分 100
用户昵称 GravatarWHZ0325 是否通过 通过
代码语言 C++ 运行时间 0.002 s
提交时间 2017-07-02 15:32:32 内存使用 0.38 MiB
显示代码纯文本
#include <cstdio>
#include <cstring>
FILE *fin,*fout;
char c[100001]={0};
void mul(char a[],char b[]) {
	int la=strlen(a);
	int lb=strlen(b);
	short int ab[10000]={0};
	for(int i=0;i<la;i++) {
		for(int j=0;j<lb;j++) {
			ab[i+j]+=(a[i]-'0')*(b[j]-'0');
		}
	}
	int carry=0;
	for(int i=la+lb-2;i>=0;i--) {
		carry+=ab[i];
		ab[i]=carry%10;
		carry/=10;
	}
	if(carry) {
		c[0]=carry+'0';
		for(int i=1;i<=la+lb-1;i++) {
			c[i]=ab[i-1]+'0';
		}
	}
	else {
		bool start=true;
		for(int i=0;i<la+lb-1;i++) {
			if(start) {
				if(ab[i]!=0) {
					start=false;
					c[i]=ab[i]+'0';
				}
			}
			else {
				c[i]=ab[i]+'0';
			}
		}
	}
	if(c[0]==0) {
		c[0]='0';
	}
}
int main() {
	fin=fopen("mul.in","rb");
	fout=fopen("mul.out","wb");
	char a[101]={0};
	char b[101]={0};
	fscanf(fin,"%s",a);
	fscanf(fin,"%s",b);
	mul(a,b);
	fprintf(fout,"%s",c);
	fclose(fin);
	fclose(fout);
	return 0;
}