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