1263: 【例】【基础】【P1303】高精度乘
内存限制:32 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:39
解决:15
题目描述
高精度乘,求两个很大的非负整数相乘的结果。
输入
2个非负整数,每个一行,每个整数不超过240位。
输出
一个整数,表示相乘的结果。
样例输入 复制
514
495
样例输出 复制
254430
提示
#include<bits/stdc++.h>
using namespace std;
#define maxn 520
int a[maxn],b[maxn],c[maxn];
int main(){
string A,B;
cin>>A>>B;
int lena,lenb,lenc;
lena=A.length();
lenb=B.length();
for (int i=lena-1;i>=0;i--) {
a[lena-i]=A[i]-'0';
}
for (int i=lenb-1;i>=0;i--) {
b[lenb-i]=B[i]-'0';
}
for (int i=1;i<=lena;i++) {
for (int j=1;j<=lenb;j++) {
c[i+j-1]+=a[i]*b[j];
}
}
lenc=lena+lenb;
for (int i=1;i<=lenc;i++) {
c[i+1]+=c[i]/10;
c[i]=c[i]%10;
}
while (c[lenc]==0)
lenc--;
for (int i=max(1,lenc);i>=1;i--)
cout<<c[i];
return 0;
}
#include<bits/stdc++.h>
using namespace std;
#define maxn 520
int a[maxn],b[maxn],c[maxn];
int main(){
string A,B;
cin>>A>>B;
int lena,lenb,lenc;
lena=A.length();
lenb=B.length();
for (int i=lena-1;i>=0;i--) {
a[lena-i-1]=A[i]-'0';
}
for (int i=lenb-1;i>=0;i--) {
b[lenb-i-1]=B[i]-'0';
}
for (int i=0;i<lena;i++) {
for (int j=0;j<lenb;j++) {
c[i+j]+=a[i]*b[j];
}
}
lenc=lena+lenb;
for (int i=0;i<lenc;i++) {
c[i+1]+=c[i]/10;
c[i]=c[i]%10;
}
while (c[lenc]==0)
lenc--;
for (int i=max(0,lenc);i>=0;i--)
cout<<c[i];
return 0;
}