记录编号 |
419298 |
评测结果 |
AAAAAAAAAAAA |
题目名称 |
增强的乘法问题 |
最终得分 |
100 |
用户昵称 |
WHZ0325 |
是否通过 |
通过 |
代码语言 |
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;
}