kingho11 @ 2024-07-19 16:12:21
#include<bits/stdc++.h>
using namespace std;
const int N=5005;
long long a[N],b[N],c[N];
void times(string aa,string bb)
{
for(long long i=0;i<aa.length();i++)
{
a[i+1]=aa[i]-'0';
}
for(long long i=0;i<bb.length();i++)
{
b[i+1]=bb[i]-'0';
}
long long lena=aa.length(),lenb=bb.length();
for(long long j=lena;j>=1;j--)
{
for(long long i=lenb;i>=1;i--)
{
c[i+j-1]+=a[i]*b[j];
}
}
for(long long i=lena+lenb;i>=1;i--)
{
c[i-1]+=c[i]/10;
c[i]%=10;
}
bool flag=false;
for(long long i=0;i<=lena+lenb-1;i++)
{
if(!flag && c[i]==0)
{
continue;
}
flag=true;
cout<<c[i];
}
if(!flag)
{
cout<<0;
}
}
int main()
{
string a,b;
cin>>a>>b;
times(a,b);
}
by Gfx7894560123 @ 2024-07-20 21:08:02
你想复杂了:
#include<bits/stdc++.h>
using namespace std;
string tim(string a,string b){
if(a=="0"||b=="0") return "0";
int l1=a.size(),l2=b.size(),x=0;
string ans(l1+l2-1,'0');
for(int i=l1-1;i>=0;i--){
x=0;
for(int j=l2-1;j>=0;j--){
int c1=a[i]-'0',c2=b[j]-'0';
x+=c1*c2+ans[i+j]-'0';
ans[i+j]=x%10+'0';
x/=10;
}
if(i) ans[i-1]+=x;
}
if(x) ans=to_string(x)+ans;
return ans;
}
int main()
{
cin.tie(nullptr)->sync_with_stdio(0);
string a,b;
cin>>a>>b;
cout<<tim(a,b);
return 0;
}
不用太复杂