给出2个大整数A,B,计算A*B的结果。
输入
第1行:大数A
第2行:大数B
(A,B的长度 <= 1000,A,B >= 0)
输出
输出A * B
思路:
用第一个数组依次乘第二个数组中的每一位数,记录,然后输出(本题需要注意边界)
#include<iostream>
using namespace std;
char num1[1010],num2[1010],num[10000010];
int maxm;
int length(string num){
int len=0;
for(int i=0;num[i]!='\0';i++)
len++;
return len;
}
void mul(int n,int m){
for(int i=length(num1)-1;i>=0;i--){
int sum=num[m]-'0'+(num1[i]-'0')*n;
if(sum>=10){
int l=m+1;
num[l]=num[l]+sum/10;
num[m]=sum%10+'0';
}else{
num[m]=sum+'0';
}
m++;
}
if(m>maxm) maxm=m;
}
int main(){
cin>>num1>>num2;
int m=0;
for(int i=0;i<10000010;i++){
num[i]='0';
}
for(int i=length(num2)-1;i>=0;i--){
// cout<<num2[i];
mul(num2[i]-'0',m);
m++;
}
// int max;
// for(int i=length(num);i>=0;i--){
// if(num[i]!='\0'||num[i]!='0') {
// max=i; break;
// }
// }
// cout<<max<<endl;
if(num[maxm]!='0') cout<<num[maxm];
for(int i=maxm-1;i>=0;i--){
if(num[i]<='9'&&num[i]>=0)
cout<<num[i];
}
return 0;
}