高精度乘法
给定两个非负整数(不含前导 00) A和 B,请你计算 A×B 的值。
输入格式
共两行,第一行包含整数 A,第二行包含整数 B。
输出格式
共一行,包含 A×B 的值。
数据范围
1≤A的长度≤1000001≤的长度≤100000,
0≤B≤100000≤≤10000
输入样例:
输出样例:
大数乘小数的模板。
大数的每一位和小数相乘,将得到的乘积相加。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| #include<iostream> #include<vector> using namespace std;
vector<int> mul(vector<int> a,int b){ vector<int> c; int t=0; for(int i=0;i<a.size();i++){ t+=a[i]*b; c.push_back(t%10); t/=10; } while(t){ c.push_back(t%10); t/=10; } while(c.size()>1&&c.back()==0) c.pop_back(); return c; }
int main(){ string a; int b; cin>>a>>b; vector<int> n; for(int i=a.size()-1;i>=0;i--) n.push_back(a[i]-'0'); vector<int> c=mul(n,b); for(int i=c.size()-1;i>=0;i--) cout<<c[i]; return 0; }
|