3117 高精度练习之乘法
题目链接.
日常水题
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a,b;
cin>>a>>b;
if(a.length()<b.length())swap(a,b);
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
//cout<<a<<'
'<<b;
int aa[505],bb[505],ans[1010]={0};
for(int i=0;i<a.length();i++)aa[i]=a[i]-'0';
for(int i=0;i<b.length();i++)bb[i]=b[i]-'0';
/*
for(int i=0;i<a.length();i++)printf("%d",aa[i]);
printf("
");
for(int i=0;i<b.length();i++)printf("%d",bb[i]);
*/
for(int i=0;i<b.length();i++){
for(int j=0;j<a.length();j++){
ans[i+j]+=bb[i]*aa[j];
}
}
for(int i=0;i<a.length()+b.length();i++){
if(ans[i]>=10){
ans[i+1]+=ans[i]/10;
ans[i]=ans[i]%10;
}
//printf("%d ",ans[i]);
}
printf("
");
int have=0;
for(int i=a.length()+b.length();i>=0;i--)
{
if(ans[i]!=0)have=1;
if(have)printf("%d",ans[i]);
}
return 0;
}