高精度*高精度
精髓在于几个技巧
c[i+j]+=(a[i]*b[j]);
c[i+j+1]+=(c[i+j])/10;
c[i+j]%=10;
#include <iostream>
using namespace std;
#include <vector>
const int N = 1e6 + 10;
int a[N],b[N],c[N];
void solve()
{
string s,ss;cin >> s >> ss;
for(int i=0;i<s.size();i++)
{
a[i]=s[s.size()-i-1]-'0';
}
for(int i=0;i<ss.size();i++)
{
b[i]=ss[ss.size()-i-1]-'0';
}
for(int i=0;i<s.size();i++)
{
for(int j=0;j<ss.size();j++)
{
c[i+j]+=(a[i]*b[j]);
c[i+j+1]+=(c[i+j])/10;
c[i+j]%=10;
}
}
//前缀0消除
int k=s.size()+ss.size();
while(c[k]==0 && k>0) k--;
for(int i=k;i>=0;i--) cout << c[i];
return;
}
int main(void)
{
solve();
return 0;
}