Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
105476 | 毛泓博(做题专用,大号Fess) | 高精度乘法 | C++ | 通过 | 100 | 0 MS | 272 KB | 766 | 2023-10-06 20:45:28 |
#include<bits/stdc++.h> using namespace std; string a1,b1; int a[5005]={0},b[5005]={0},s[10004],lena,lenb,lens; int main() { cin>>a1>>b1; lena=a1.length(); lenb=b1.length(); for(int i=1;i<=lena;i++) a[i]=a1[lena-i]-48; for(int i=1;i<=lenb;i++) b[i]=b1[lenb-i]-48; // if((a[lena]==-3||b[lenb]==-3)&&a[lena]!=b[lenb]) // { // cout<<'-'; // if(a[lena]==-3) lena--; // else if(b[lenb]==-3) lenb--; // } // else if(a[lena]==-3&&a[lena]==b[lenb]) lena--,lenb--; lens=lena+lenb; for(int i=1;i<=lena;i++) { for(int j=1;j<=lenb;j++) { s[i+j-1]+=(a[i]*b[j]); if(s[i+j-1]>=10) { s[i+j]+=(s[i+j-1]/10); s[i+j-1]%=10; } } } while(!s[lens]&&lens>1) lens--; for(int i=lens;i>=1;i--) cout<<s[i]; return 0; }