问题内容
Description
输入2个整数a和b,输出a*b。
Input Format
输入有两行,第一行a,第二行b。
0≤a,b≤21000。
Output Format
输出只有一行,a*b。
Sample Input
44
3
Sample Output
132
代码实现
#include <stdio.h>
#include <string.h>
char a[100002];
char b[100002];
char result[100002] = {0};
int main(){
int i = 0,j,curidx;
int lena = 0,lenb = 0,lenres;
char *add=a;
char in;
while(1) {
in = getchar();
if(in == '\n'){
add[i]=0;
if(!lena){
lena = i;
add = b;
i = 0;
}
else{
lenb = i;
break;
}
} else{
add[i++] = in;
}
}
lenres = lena + lenb;
for (i = 0; i < lena;i++){
for (j = 0; j < lenb ; j++){
curidx = i + j;
result[lenres - curidx - 1] += (a[lena - i - 1]-'0') * (b[lenb - j - 1] - '0');
in = result[lenres - curidx - 1] / 10;
result[lenres - curidx - 1] = result[lenres - curidx - 1] % 10;
result[lenres - curidx - 2] += in;
}
}
for (i = lenres - 1; i >= 0;i--){
if(result[i] > 10){
result[i - 1] += result[i] / 10;
}
result[i] = (result[i] % 10) + '0';
}
for (i = 0; i < lenres;i++)
{
if(result[i]!='0'){
break;
}
}
if(i > lenres -1){
i = lenres - 1;
}
puts(&result[i]);
return 0;
}
时间:8ms 空间:8508kb