Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
169724 杜智真 高精度乘法 C++ 解答错误 20 1 MS 284 KB 1180 2024-08-20 16:45:38

Tests(6/30):


#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){ int x=0; for (int i=0;i<sa;i++){ for (int j=0;j<sb;j++){ if (a[i]*b[j]+c[i+j]>9){ x=(a[i]*b[j])/10; c[i+j]=(a[i]*b[j]+c[i+j])%10; c[i+j+1]+=x; continue; } c[i+j]=a[i]*b[j]+c[i+j]; } } int s=-1; for (int i=(sa+sb)*(sa+sb);i>=0 and c[i]==0;i--){ s+=1; } sc=(sa+sb)*(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 and sa==1) or (b[0]==0 and sb==1)){ 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; }


测评信息: