提交时间:2024-08-20 10:39:14
运行 ID: 168439
#include <bits/stdc++.h> using namespace std; int a[5005],b[5005],c[5005],sa=0,sb=0,sc=0; void cinf(int a[],int &sa){ string st; cin >> st; for (int i=0;i<st.size();i++){ a[st.size()-i-1]=st[i]-'0'; } sa=st.size(); } void addf(int a[],int b[],int c[],int &sa){ for (int i=0;i<sa;i++){ if (a[i]+b[i]+c[i]>9){ c[i+1]+=1; c[i]=(a[i]+b[i]+c[i])%10; continue; } c[i]+=a[i]+b[i]; } if (c[sa]>0){ sa++; } } void mulityf(int a[],int b[],int c[],int &sa,int &sb){ for (int i=0;i<sa;i++){ for (int j=0;j<sb;j++){ if (a[i]*b[j]+c[i+j]>9){ c[i+j+1]+=(a[i]*b[j]+c[i+j])/10; c[i+j]=(a[i]*b[j]+c[i+j])%10; continue; } c[i+j]+=a[i]*b[j]; } } int s=0; for (int i=sa*sb-1;i>=0 and c[i]==0;i--){ s+=1; } sc=sa*sb-s; } void printff(int a[],int sa){ for (int i=sa-1;i>=0;i--){ cout << a[i]; } } int main(){ cinf(a,sa); cinf(b,sb); if (a[0]==0 or b[0]==0){ cout << 0; return 0; } if (sa>sb){ mulityf(a,b,c,sa,sb); printff(c,sc); }else{ mulityf(b,a,c,sb,sa); printff(c,sc); } return 0; }