大整数乘法
大整数乘法
给出2个大整数A,B,计算A*B的结果
Input
第1行:大数A 第2行:大数B (A,B的长度 <= 1000,A,B >= 0)
Output
输出A * B
Sample Input
123456
234567
Sample Output
28958703552
代码
#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=2001;
int a[N],b[N],c[N];
char num1[N],num2[N];
int main(){
cin>>num1>>num2;
int len1 = strlen(num1);
int len2 = strlen(num2);
for (int i = 0; i < len1; i++)
{
a[len1-i]=num1[i]-'0';
}
for (int i = 0; i < len2; i++)
{
b[len2-i]=num2[i]-'0';
}
int p=0,sum;
int t;
for (int i = 1; i <=len2 ; i++)
{
p=0;//p是每用一个b中的数乘a中每个数每步产生的进位
for (int j = 1; j <= len1; j++)
{
t= j+i;
sum =a[j]*b[i]+p+c[t-1];//a 和 b中的数乘,加上进位,再加上每个位置遗留的数c[t-1]
p=sum/10;
c[t-1]=sum%10;
}
while (p)
{
//还有进位,向前进一位
c[t++]=p%10;
p/=10;
}
}
//消除前导0
while(c[t]==0)
{
t--;
}
for(int i=t;i>=1;i--)
cout<<c[i];
return 0;
}
因上求缘,果上努力~~~~ 作者:图神经网络,转载请注明原文链接:https://www.cnblogs.com/BlairGrowing/p/13738108.html