问题描述
高精度乘单精度,a×b。 a 是一个很大的非负整数,但不超过 240 位,b是一个非负整数不超过 10000 ,求 a×b 。
输入
两行数字。
第一行是 a ,第二行是 b 。
输出
一行,输出 a×b 的计算结果。
样例
输入
111111111111111111111111111111111111 10
输出
1111111111111111111111111111111111110
编辑代码
语言 C++
代码:
#include <bits/stdc++.h>
#include<string>
#include<algorithm>
using namespace std;
int main(){
int t=0,i,j,d,a[32767]={},b[32767]={},c[32767]={},e[32767]={};
int l,l1;
string s,s1,result;
cin>>s>>s1;
l=s.size();
l1=s1.size();
for(i=0;i<=l-1;i++){
a[i]=s[l-1-i]-'0';
}
for(i=0;i<=l1-1;i++){
b[i]=s1[l1-1-i]-'0';
}
for(i=0;i<=l-1;i++){
for(j=0;j<=l1-1;j++){
c[i+j]+=a[i]*b[j];
c[i+j+1]+=c[i+j]/10;
c[i+j]=c[i+j]%10;
}
}
d=l+l1;
for(i=d;i>=0;i--){
if(c[i]==0&&d>=1){
d--;
}
else{
break;
}
}
for(i=d;i>=0;i--){
result += char(c[i]+'0');
}
cout<<result;
}