题目描述
输入两个整数a,b,求a * b的积
因为弱化版的缘故:
保证a和b都是非负数
保证b是低精度数
保证计算结果不超过500位
样例输入/输出
输入数据 1
98765432123456789 10
输出数据 1
987654321234567890
数据规模与提示
时间限制:1000ms.
内存限制:256MB.
#include<bits/stdc++.h>
using namespace std;
string a,b;
string gchen(string a,string b){int t=0;vector<int>c(a.size()+b.size()+1);reverse(a.begin(),a.end());reverse(b.begin(),b.end());for(int i=0;i<a.size();i++){for(int j=0;j<b.size();j++){c[i+j]+=(a[i]-'0')*(b[j]-'0');c[i+j+1]+=c[i+j]/10;c[i+j]%=10;}}while(c.size()>1&&c.back()==0)c.pop_back();string r;for(int i=c.size()-1;i>=0;i--)r.push_back(c[i]+'0');return r;
}
string gchen1(string a,string b){if(a[0]=='-'&&b[0]!='-'){a.erase(0,1);cout<<"-";}if(a[0]!='-'&&b[0]=='-'){b.erase(0,1);cout<<"-";}if(a[0]=='-'&&b[0]=='-'){a.erase(0,1);b.erase(0,1);}return gchen(a,b);
}
int main(){cin>>a>>b;cout<<gchen1(a,b)<<endl;return 0;
}