【问题描述】
输入两个高精度整数a和b(a,b位数<=200),求两数的乘积。 </p>
【输入格式】
输入共两行,分别为a和b。
【输出格式】
输出共一行,表示两个数的积。
样例1
输入数据 1
-2 3
Copy
输出数据 1
-6
代码如下:
#include<bits/stdc++.h>
using namespace std;
string a,b;
int flaga=1,flagb=1;
int a1[1005],b1[1005],c[1005],bga,bgb;
int main(){
cin>>a>>b;
if(a[0]=='-'&&b[0]=='-'){
flaga=1,flagb=1;
bga=1;
}
int sa=a.size(),sb=b.size();
int ss=sa+sb+1;
if(a[0]=='-'){
flaga=-1;
bga=1;
}
if(b[0]=='-'){
flagb=-1;
bgb=1;
}
for(int i=bga;i<sa;i++){
a1[i-bga]=a[sa-i-1+bga]-'0';
}
for(int i=bgb;i<sb;i++){
b1[i-bgb]=b[sb-i-1+bgb]-'0';
}
for(int i=0;i<sa;i++){
for(int j=0;j<sb;j++){
c[i+j]+=a1[i]*b1[j];
}
}
for(int i=0;i<ss;i++){
c[i+1]+=c[i]/10;
c[i]%=10;
}
while(ss>0&&!c[ss]){
ss--;
}
if(flaga*flagb==-1){
cout<<"-";
}
for(int i=ss;i>=0;i--){
cout<<c[i];
}
return 0;
}